小白学习大型C++源码项目系列之内存分区

分区的目标是为了更好的管理,提高效率。就像一个公司一样会分很多的部门。

C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量。
数据区又分为静态数据区、动态数据区以及常量区,
动态数据区包括堆区和栈区。

程序员用new、malloc(memory allocation)动态内存分配,delete、free释放。
堆的空间小于等于实际的物理内存,分配速度慢。

堆代码实践

#include <iostream>
using namespace std;
int main() {
    int *p = NULL;
    p = (int*)malloc(10 * sizeof(int));
    if (p == NULL)
    {
        cout << "分配失败" << endl;
    }
    *p = 10;
    cout << *p << endl;
    free(p);
    return 0;
}
输出:10

存放函数内的局部变量,由编译器自动分配和释放
栈的空间有限,分配速度快。

全局、静态存储区

存放全局变量和静态变量static,程序结束时释放

常量存储区

程序代码区

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/105546804