共计 530 个字符,预计需要花费 2 分钟才能阅读完成。
内存调配形式
在 C ++ 中,内存分成 5 个区,他们别离是堆、栈、自在存储区、全局 / 动态存储区和常量存储区。
栈
在执行函数时,函数内局部变量的存储单元都能够在栈上创立,函数执行完结时这些存储单元主动被开释。栈内存调配运算内置于处理器的指令集中,效率很高,然而调配的内存容量无限。
是由编译器在须要时主动调配,不须要时主动革除的变量存储区。通常寄存局部变量、函数参数等。
堆
就是那些由 new 调配的内存块,他们的开释编译器不去管,由咱们的应用程序 (程序员) 去管制,个别一个 new 就要对应一个 delete,一个 new[]与一个 delete[]对应。如果程序员没有开释掉,那么在程序完结后,操作系统会主动回收。
自在存储区
就是那些由 malloc 等调配的内存块,他和堆是十分相似的,不过它是用 free 来完结本人的生命的。
全局 / 动态存储区
全局变量和动态变量被调配到同一块内存中(在以前的 C 语言中,全局变量又分为初始化的和未初始化的,在 C ++ 外面没有这个辨别了,他们独特占用同一块内存区。)
常量存储区
这是一块比拟非凡的存储区,他们外面寄存的是常量,不容许批改。
(留神:堆和自在存储区其实不过是同一块区域,new 底层实现代码中调用了 malloc,new 能够看成是 malloc 智能化的高级版本)
正文完