栈:空间小,由操作系统管理内存,包括分配,回收
堆:空间大,由程序员自行管理内存,一定注意内存回收,避免内存泄漏
动态内存
原因:1.栈空间小(1M)
2.根据变量定义数组长度
创建内存:
malloc,最常用
calloc,将每一个元素置0
realloc:修改内存的大小
释放内存:free,不释放则会出现内存泄漏,
泄漏的内存自动返还:
1.程序(进程)退出
2.关机(重启)
动态内存分配的空间在堆,堆很大,最大能分配的连续块1.8G左右
内存泄漏:申请的内存,没有释放
free崩溃的原因:本质修改,丢失内存的头或者尾信息
1.数组越界(修改了尾信息)
2.移动动态内存的地址(丢失头信息)
3.重复释放同一段内存
栈与堆
最新推荐文章于 2023-05-25 17:19:20 发布