当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

C/C++在内存分配和释放时,小心野指针

作者:小梦 来源: 网络 时间: 2024-03-29 阅读:

普通的野指针

在C/C++中进行内存分配之后,如果在使用过之后释放了内存,一定要注意将指针置为NULL,否则指针将变成野指针。

示例代码如下

char *p = (char *)malloc(sizeof(char));//exe taskfree(p);//若不释放指针p所指内存空间,则会造成内存泄漏。p = NULL;//若不置指针p为NULL,则可能会被误以为是合法的,就会成为野指针。         //如果后续无意中引用了p就可能会造成错误...... // do something else

因为在通过 free(p)释放了内存之后,只是将内存进行了释放,不能再使用这块内存,但是这时候p还是会指向这块内存(所以还有通过指针访问这块内存的可能性),所以为了安全,为了不出现后续无意中引用了p就可能会造成错误的情况,就需要在释放了内存之后,显式的将指针置为NULL

这些编程中的细节的规范是极其重要的,编程其实是一个庞大的而且其中有着极其多的复杂的细节的工作,一个好的开发者一定要能够在编码的细节、代码的规范上面做得好才行

另一种形式的野指针

还可能存在这样的情况:有多个指针指向同一块地址,通过一个指针释放该内存空间后,这个指针也确实被置为null了,但是还存在另外的指向该内存的指针来访问该空间的情况。

这也是另一种需要谨慎对待的野指针,所以也是需要考虑和防止的!

热点阅读

网友最爱