🚩一、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);
}


