C/C++ 程序的内存分布

程序在内存中的分布情况,一般说内存,指的是计算机的随机存储器(RAM),程序都是在这里运行的

0. 程序内存布局

1. 栈内存

程序自动向操作系统申请分配以及回收,速度快,使用方便,但是程序员无法控制,如果分配失败,抛出栈溢出错误

注意点

2. 堆内存

程序员向操作系统申请一段内存,当系统收到程序的申请时,会遍历一个记录空内存结点的链表,找到第一个空间大于或等于所申请空间的堆结点,将该空闲结点从链表中删除,并将该结点的空间分配给程序,如果链表中空闲结点的空间大于申请空间的大小,系统会自动将对于的部分放入空闲链表中,故容易造成内存的碎片化,分配速度较慢,地址不连续

注意点

3. 堆和栈的比较

申请方式

注意点

指针 p 和 n 本身是在栈中,它们指向的地址空间是堆区的空间

申请内存大小的限制

Table of Contents