C/C++ 内存分布
我们先来看下面的一段代码和相关问题:
#include <stdio.h>
#include <stdlib.h>
// 【全局/静态区】.data:已初始化的全局变量
int globalVar = 1;
// 【全局/静态区】.data:已初始化的静态全局变量(作用域限制在本文件)
static int staticGlobalVar = 1;
void Test() {
// 【全局/静态区】.data:已初始化的静态局部变量(生命周期为整个程序)
static int staticVar = 1;
// 【栈区】:局部变量,函数运行结束自动释放
int localVar = 1;
// 【栈区】:局部数组
int num1[10] = {1, 2, 3, 4};
// 【栈区】:字符数组(注意:"abcd" 会被拷贝到栈上)
char char2[] = "abcd";
// 【指针在栈区】,但指向的 "abcd" 字符串字面量在【常量区/代码段】
const char* pChar3 = "abcd";
// 【指针在栈区】,指向【堆区】通过 malloc 分配的内存
int* ptr1 = (int*)malloc(sizeof(int) * 4);
// 【指针在栈区】,指向【堆区】通过 calloc 分配并初始化的内存
int* ptr2 = (int*)calloc(, ());
* ptr3 = (*)(ptr2, () * );
(ptr1);
(ptr3);
}


