栈的特点 是 速度快,存储小,自动释放内存 :比如函数
堆的特点是,速度稍慢于栈,存储空间大,手动释放内存,调用free函数: 比如malloc定义大量存储空间,
如果 不释放内存,将一直占用内存空间,直到退出程序。
内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。
即所谓内存泄漏
内存越界
简单说,你开辟了100KB的内存用于你的数据存储或者程序运行,但是这个时候你却暂用了大于100KB的内存,这样就越界了,多出来的部分,
系统并不知道怎么去解析或者动态给你分配,所以出于对程序和系统的保护,用一种和谐的方式告诉你内存越界了或者通用内存访问错误
1、关于C语言中Debug Assertion Failed解决方法 在编译和运行时都不会出现错误,但是在执行时会出现错误。 Debug Assertion Failed
2、关于C语言 编译不会出错,最后提示内存不能读取或写入,
这两个问题可能的原因是
(1)直接释放了一个空指针,
(2)一个指针被释放了两次(即第二次释放一个空指针)
(3)数组越界:访问了超过数组长度的内存