发表时间:2022-03-25来源:网络
先看一段C语言代码:
int 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"; 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); }globalVar->数据段(静态区)
staticGlobalVar->数据段(静态区)staticVar->数据段(静态区)localVar->栈num1->栈 char2->栈(栈帧)*char2->栈(栈帧)pChar3->栈(栈帧)*pChar3->代码段ptr1->栈(栈帧)*ptr1->堆 
栈:又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的;
内存映射段:是高效I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信;
堆:用于程序运行时动态内存的分配,堆是向上增长的;
数据段:存储全局数据和静态数据;
代码段:可执行的代码 / 只读常量;

注意:ptr2不需要释放,因为 realloc 只是对 ptr2的原有基础上进行了扩容,实际上用的是同一块内存空间;
共同点:都是程序猿从堆上申请空间的方法,并且需要手动释放或者在程序结束运行的时候自动释放,否则会造成内存泄露;
malloc:分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间;
calloc:将初始化这部分的内存;
realloc:则对malloc 、 realloc 申请的内存进行大小的调整;
alloca是从栈上申请内存空间,且不需要释放,由系统自动释放;
ptr1 ==> 动态申请了一个int类型的空间;
ptr2 ==> 动态申请了一个int类型的空间并初始化为10;
ptr3 ==> 动态申请了一个int型数组,数组大小是在[ ]中指定
注意:申请和释放单个元素的空间,使用 new 和 delete 操作符;申请和释放连续空间,使用 new[ ] 和 delete[ ];
下一篇:c++自学day2
计支宝app下载v3.1.29 安卓版
142.27MB |商务办公
小小优酷最新版下载v5.4.6 安卓官方版
68.11MB |影音播放
艺图语app下载v3.3.4 安卓免费版
34.33MB |系统工具
爱鸽者手机版下载v3.2.9 安卓版
243.57MB |商务办公
一品威客网接单app(一品众包)下载v2.7.1 安卓最新版
55.01MB |商务办公
诸葛找房网官方版下载v4.8.1.1 安卓最新版
66.6MB |生活服务
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游末日餐厅安卓版下载v1.35安卓版
其它手游葫芦侠十楼免费破解版下载v4.4.0.6安卓版
其它手游葫芦侠8楼最新破解版下载v4.4.0.6安卓版
其它手游