悬空指针与野指针

在C语言中,悬空指针是调用free()释放内存后仍指向该内存的指针,可能导致不可预知的错误。避免方法是在释放内存后将指针置为NULL。另一方面,野指针是指未初始化的指针,使用前必须初始化。良好的编程习惯可以防止这两种问题的发生。
摘要由CSDN通过智能技术生成

悬空指针(dangling pointer)

在C语言中,调用free§函数会释放p指向的内存块,但是不会改变p本身。如果忘记了p不再指向有效内存块,混乱可能随即出现。

If a pointer still references the original memory after it has been freed, it is called a dangling pointer.

char *p = malloc(4);
...
free(p);
...
strcpy(p, "abc"); // wrong

为了避免出现"悬空指针"引发不可预知的错误,在释放内存之后,常常会将指针p赋值为NULL。

char *p = malloc(4);
...
free(p);
p = NULL;

野指针(wild pointer)

A pointer in c which has not been initialized is known as wild pointer.

野指针(wild pointer)就是没有被初始化过的指针。
比如:

void *p;

此时p就是一个野指针。

在C中,一般定义指针时就初始化指针,来防止野指针。

void *p = NULL;
void *data = malloc(size);

参考文献

https://www.cnblogs.com/idorax/p/6475941.html
https://zhuanlan.zhihu.com/p/146477984

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值