c/c++内存管理,对于c/cpp程序内存被划分成了这几个,代码区,全局数据区,只读常量区,堆区,共享区,栈区。前三区在程序编译后就确定了大小,对应elf文件的.text段 .data段 .rodata段 .bss段,其中.text段存储代码只读,.data存储可读写的全局/静态变量,rodata段存储只读全局/静态变量,未初始化的全局/静态变量则存在.bss段。栈区和堆区则是程序运行后动态增长,局部变量存储在栈上,生命周期结束后被回收,如何回收可以去了解一下函数栈帧。对于堆段,c可以使用malloc,cpp可以使用malloc与new。实际上new调用的也是malloc,如果new的是stl容器,会采用stl二级空间配置器分配空间,避免内存碎片。
1 2

相关推荐

牛客网
牛客企业服务