堆和栈的区别
1、堆栈空间分配不同。栈由操作系统自动分配释放,存放函数的参数值,局部变量的值等;堆一般由程序员分配释放
2、堆栈缓存方式不同。堆使用的是一级缓存,
3、堆栈数据结构不同。堆类似数组结构,栈类似栈结构,先进后出
4、大小限制:栈的大小受系统可用内存的限制,但在实践中,堆的大小受限于操作系统和硬件的限制
5、栈不容易产生碎片,堆容易产生碎片
总的来说,栈适合于管理具有较短生命周期和固定大小的数据,而堆适合于管理具有动态生命周期和大小不确定的数据
C++的内存管理
1、C++内存分成了五个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
2、内存泄漏是什么?
简单说就是申请了一个内存空间,使用完毕没有释放
解决方案:
1、良好的编码习惯;
2、使用智能指针
3、用一些常见的工具插件
malloc和局部变量分配在堆还是栈
malloc是在堆上分配内存,跟new是一样的,需要程序员自己回收内存;局部变量是在栈中分配内存的,超过作用域就自动收回