讲解:
1.栈:是存放非静态局部变量,函数参数,函数返回值等等。
2.堆:就是存放malloc,calloc,realloc,new,开辟动态内存地方。
3.数据段(全局区)(静态区):存放全局变量,静态变量
4.代码段(常量区):存放常量字符串
练习:
int globalVar = 1;
static int staticGlobalVar = 1;
void Test()
{
static int staticVar = 1;B
int localVar = 1;
int num1[10] = {1, 2, 3, 4};
char char2[] = "abcd";
char* pChar3 = "abcd";
int* ptr1 = (int*)malloc(sizeof (int)*4);
int* ptr2 = (int*)calloc(4, sizeof(int));
int* ptr3 = (int*)realloc(ptr2, sizeof(int)*4);
free (ptr1);
free (ptr3);
}
- 选择题:
选项: A.栈 B.堆 C.数据段 D.代码段
globalVar在哪里?____ staticGlobalVar在哪里?____
staticVar在哪里?____ localVar在哪里?____
num1 在哪里?____
char2在哪里?____ *char2在哪里?___
pChar3在哪里?____ *pChar3在哪里?____
ptr1在哪里?____ *ptr1在哪里?____ - 填空题:
sizeof(num1) = ____;
sizeof(char2) = ____; strlen(char2) = ____;
sizeof(pChar3) = ____; strlen(pChar3) = ____;
sizeof(ptr1) = ____;
答案:1.C, C,
C, A,
A,
A,A,
A,D,
A,B,
2.40,
5,4,
4或8,4
4或8(64位指针大小为8, 32位指针大小为4)



