C++堆和栈区别

区别一:
堆内存由程序员创建和释放,处理不当容易产生内存泄露。
栈内存由编译器自动创建和释放。
区别二:
堆频繁使用会产生大量碎片,使程序效率降低
栈由于是编译器管理则不会产生这个问题
区别三:
堆的内存地址向增大方向使用
栈的内存地址向减小方向使用
区别四:
堆是动态分配
栈有静态分配和动态分配。静态分配由编译器完成,动态分配由alloca函数实现(由编译器释放)
区别五:
堆的效率对比而言比较慢
栈的效率对比而言比较快

你可能感兴趣的:(C/C++,编译器,内存管理,面试,C++,堆栈)