关于内存分配的问题

来源:6-12 CPP动态分配和回收原则

dark铭

2020-02-29

老师,请问下在堆区的内存是一段一段分配的怎么来理解?
另外在栈区的变量的内存是随机分配的吧,只有在堆区的内存是一段段分配的吗?(就是有连续性的分配)

写回答

1回答

quickzhao

2020-02-29

堆的内存分配可以由程序员自己掌控,所以很多分配内存的优化方案会在分配空间时将一段连续区域一次性分配出来,然后通过一系列方案去管理这段内存,这是一种内存池的方案,所以尽量少在工程中需要时就临时去分配一段空间,这样会产生内存碎片;栈就没办法了,系统控制,程序员管不了。

1
3
quickzhao
回复
dark铭
栈分配的方式不一定像你想的那么连续,编译器会做很多处理,包括安全性和代码优化的问题,等我们讲函数栈时你可以仔细观察。堆是由程序员可以掌控分配和释放空间时机,所以非常灵活,能否用好取决于程序员素质。
2020-03-01
共3条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程