win7做网站,关键词在线试听免费,深圳跨境电商公司排行榜,ukidc做电影网站[TOC}
C的内存管理 各个区储存内容
1.栈
局部变量和在执行函数时#xff0c;函数中创建的局部变量都会在栈上创建#xff0c;函数执行结束时会被自动释放。从高地址向低地址储存。
2.堆
是new/malloc/calloc/realloc分配的代码块#xff0c;需要手动释放。如果程序员没…[TOC}
C的内存管理 各个区储存内容
1.栈
局部变量和在执行函数时函数中创建的局部变量都会在栈上创建函数执行结束时会被自动释放。从高地址向低地址储存。
2.堆
是new/malloc/calloc/realloc分配的代码块需要手动释放。如果程序员没有手动释放在程序结束后操作系统会自动释放回收。从低地址向高地址储存。
3.内存映射区
4.静态区/数据段
全局变量和静态变量储存在这。
5.常量区/代码区
存放常量不允许改变。
#includeiostreamint globalVar 1;
static int staticGlobalVar 1;
void Test()
{static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] abcd;const 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);
}1.globlVar是全局变量储存在静态区/数据段 2.staticGlobalVar是全局的静态变量储存在静态区/数据段 3.staticVar是静态变量储存静态区/数据段 4.localVar是局部变量储存在栈区 5.nums1是局部变量储存在栈区 6.char2是局部变量储存在栈区 7.*char2 指的是首元素的地址而 char2 是在栈上的数组所以存放在栈区 8.pChar3 是局部的指针存的是 “a,b,c,d\0” 这个常量字符串的首元素地址 存放在栈区 9.*pChar3 是对其解引用结果就是 “a,b,c,d,\0” 这个常量字符串存放在代码段 10.ptr1 是局部的指针,存的是开辟的空间的首元素地址存放在栈区 11.*ptr1 是对其解引用存的就是开辟的空间存放在堆区