野指针和内存溢出

1.野指针
野指针是表示指针指向的内存空间被释放了,导致这个指针指向了不能使用的空间,如果在访问则会出错,所以一般在释放空间后给野指针赋值NULL
例:

int main(int argc, const char * argv[]) {
   int *p = ( int *)malloc (4);//开辟空间
   *p = 100;
   free(p); //释放空间,p就成为了野指针
   p = NULL; //因为p 为野指针了,所以最好把它指向 NULL0 位置)
   return 0;
}



销毁开辟的空间后,p指针指向了不可用的空间,此时p成为了野指针


2.内存溢出
内存溢出是说指向该内存的指针变量在栈中被销毁后,而这块内存没有被销毁,导致这块内存不能被释放。
例:
int main(int argc, const char * argv[]) {
   int *p = ( int *)malloc (4);//开辟空间
   *p = 100;
   return 0;
}

当上面的p变量在main函数执行完后,指针变量p从栈中被销毁,但是开辟的4个字节大小的空间却没有被销毁,导致内存溢出了。


p指针被销毁后



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值