悬空指针(Dangling pointer)避免方法

什么是悬空指针?

一个指针所指的内存被释放后,这个指针就被悬空了。

悬空指针的危害?

访问悬空指针,结果随机。可能导致程序功能不正常,也可能导致程序崩溃。如果受到影响的是其它功能,问题通常很难定位。

如何避免悬空指针?

基本思路:在释放一块内存时,将指向这块内存的指针变量设置为NULL。访问指针变量前,先判断是否为NULL。

进阶:当有多个指针变量都指向同一块内存时,释放这块内存时,需要将所有指针变量的值都置为NULL,这需要维护所有指向这块内存的指针变量的信息,但是这种方式开销大,所以通常很少使用。使用频率不是非常高的对象,可以在使用前先根据id等索引查找,如果找不到,则不要使用。如果有使用者时,不能释放这块内存,我们可以使用引用计数,只有当引用计数为0时,才真正释放内存,否则,只是引用计数减1。

猜你喜欢

转载自blog.csdn.net/jxzdsw/article/details/81171745