野指针
eg:char* p = (char*)malloc(100); free(p);
free掉之后p只是切断了和内存空间的关系,p指针本身内部所指的地址仍然不变,但是它对这个地址处的那一块内存却已经没有所有权了。如果不把它置为空,那这个指针就会变成一个野指针(悬垂指针)。
所谓的野指针就是指向一个已经被删除的对象或未申请访问内存受限的区域的指针。与空指针不同的是,野指针无法通过判断是否为NULL而去避免,这就需要我们有一个良好的编程习惯去避免。
在我看来,野指针的成因有3个:
(1)指针没有进行初始化
(2)指针释放之后没有置成NULL。(在malloc和new之后必须要进行free和delete,但是这个释放的仅仅是我们申请的那块内存空间,但是指针本身并没有被消灭,所以我们要将指针置为NULL,否则这个指针就会乱指一通,成为野指针)
(3)指针操作超越变量的作用域。(不能返回指向栈内存的指针或者引用,因为他们出了函数之后就会被释放)
野指针
最新推荐文章于 2024-11-06 12:28:20 发布