C语言中栈和堆 内存

栈的特点 是  速度快,存储小,自动释放内存 :比如函数

堆的特点是,速度稍慢于栈,存储空间大,手动释放内存,调用free函数: 比如malloc定义大量存储空间,

如果 不释放内存,将一直占用内存空间,直到退出程序。

内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。

即所谓内存泄漏

 

内存越界
简单说,你开辟了100KB的内存用于你的数据存储或者程序运行,但是这个时候你却暂用了大于100KB的内存,这样就越界了,多出来的部分,

系统并不知道怎么去解析或者动态给你分配,所以出于对程序和系统的保护,用一种和谐的方式告诉你内存越界了或者通用内存访问错误

 

1、关于C语言中Debug Assertion Failed解决方法  在编译和运行时都不会出现错误,但是在执行时会出现错误。 Debug Assertion Failed

2、关于C语言 编译不会出错,最后提示内存不能读取或写入,

这两个问题可能的原因是

(1)直接释放了一个空指针,

(2)一个指针被释放了两次(即第二次释放一个空指针)

(3)数组越界:访问了超过数组长度的内存

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值