栈:空间小,由操作系统管理内存,包括分配,回收
堆:空间大,由程序员自行管理内存,一定注意内存回收,避免内存泄漏
动态内存
原因:1.栈空间小(1M)
2.根据变量定义数组长度
创建内存:
malloc,最常用
calloc,将每一个元素置0
realloc:修改内存的大小
释放内存:free,不释放则会出现内存泄漏,
泄漏的内存自动返还:
1.程序(进程)退出
2.关机(重启)
动态内存分配的空间在堆,堆很大,最大能分配的连续块1.8G左右
内存泄漏:申请的内存,没有释放
free崩溃的原因:本质修改,丢失内存的头或者尾信息
1.数组越界(修改了尾信息)
2.移动动态内存的地址(丢失头信息)
3.重复释放同一段内存
栈与堆
最新推荐文章于 2024-07-26 16:19:42 发布
本文深入解析栈和堆的特性及用途,对比二者在内存管理上的差异。探讨动态内存分配的必要性,详解malloc、calloc、realloc和free等函数的使用,以及内存泄漏的常见原因和free操作可能引发的问题。
722

被折叠的 条评论
为什么被折叠?



