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

本文详细阐述了在C/C++编程中野指针的概念,包括普通野指针和另一种形式的野指针,并强调了在内存分配后正确释放和置空指针的重要性,以避免潜在的内存泄漏和程序错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普通的野指针

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

示例代码如下

char *p = (char *)malloc(sizeof(char));
//exe task

free(p);//若不释放指针p所指内存空间,则会造成内存泄漏。

p = NULL;//若不置指针p为NULL,则可能会被误以为是合法的,就会成为野指针。
         //如果后续无意中引用了p就可能会造成错误

...... // do something else

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

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

另一种形式的野指针

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值