堆和栈是C/C++的两种内存分配方式:
堆和栈的不同:{\orange{堆和栈的不同:}}堆和栈的不同:
1−管理方式:{\green{1-管理方式:}}1−管理方式:
栈由编译器自动管理,堆由程序员控制
2−空间大小:{\green{2-空间大小:}}2−空间大小:
一般堆空间很大,栈空间很小
3−碎片问题:{\green{3-碎片问题:}}3−碎片问题:
堆会有频繁堆new/delete造成空间不连续,碎片化。
栈先进后出,永远不会有内存块从中间弹出,不会碎片。
4−生长方向:{\green{4-生长方向:}}4−生长方向:
堆生长方向向上,向内存地址增加。
栈生长方向向下,向内存地址减小。
5−效率:{\green{5-效率:}}5−效率:
栈由系统提供,效率高。
堆由C/C++函数库提供管理,再由系统提供,再加碎片化,效率低。