动态内存分配
2023-08-05 11:21:10 来源:博客园
(资料图片)
动态内存分配
头文件
#include #include #include #include #include
malloc
int main(){ //像内存申请10个整形的空间 int* p =(int*)malloc(10*sizeof(int));//malloc不初始化为零 if(p==NULL) { //打印错误的一个方式 printf("%s\n",strerror(errno)); } else { //正常使用空间 int i = 0; for(i=0;i<10;i++) { *(p+i)=i; } for(i=0;i<10;i++) { printf("%d ",*(p+i)); } } //当动态申请的空间不在用的时候,就应该还给操作系统 free(p); p = NULL; return 0;}
calloc
int main(){ int* p=(int*)calloc(10,sizeof(int));//calloc初始化为零 if(p==NULL) { printf("%s\n",strerror(errno)); } else { int i = 0; for(i=0;i<10;i++) { printf("%d ",*(p+i)); } } free(p); p = NULL; return 0;}
realloc
int main(){ int* p = (int*)malloc(20); if(p==NULL) { printf("%s\n",strerror(errno)); } else { int i = 0; for(i=0;i<5;i++) { *(p+i) = i; } } //就是在使用malloc开辟的20个字节空间 //假设这里,20个字节不能满足我们使用 //希望有40个字节的空间 //这里用realloc开辟 //realloc使用注意事项 //1.原有空间后有足够的空间,原空间数据不发生变化 //2.没有足够空间,在堆空间上另找一个合适大小的连续空间来使用。这样函数返回的是一个新地址。 int* p2 = realloc(p,40); int i = 0; for(i=5;i<10;i++) { *(p+i) = i; } for(i=0;i<10;i++) { printf("%d ",*(p2+i)); } free(p); p = NULL; return 0;}
常见问题
int mian(){ //1.对空指针进行解引用操作 int* p = (int*)malloc(40); //万一malloc失败了,p被赋值为NULL //*p = 0;//err int i = 0; for(i=0;i<10;i++) { *(p+i) = i;//err } free(p); p = NULL; //2.对动态开辟的内存的越界访问 int *p = (int*)malloc(5*sizeof(int)); if(p == NULL) { return 0; } else { int i = 0; for(i=0;i<10;i++) { *(p+i) = i; } } free(p); p = NULL; //3.对动态开辟内存的free int a = 10; int* p = &a; *p = 20; free(p); p = NULL; int *p = (int*)malloc(40); if(p == NULL) { return 0; } // //使用 int *p2 = realloc(p,80); if(p2 != NULL) { p = p2; } int *p = realloc(NULL,40);//malloc(40) //4.使用free释放动态开辟内存的一部分 int *p = (int*)malloc(40); if(p == NULL) { return 0; } int i = 0; for(i=0;i<10;i++) { *p++ = i; } //回收空间 free(p); p = NULL; //5.对同一块动态内存的多次释放 int *p = (int*)malloc(40); if(p == NULL) { return 0; } //使用 //释放 free(p); p = NULL;//避免二次free //... free(p); //6.动态开辟内存忘记释放(内存泄漏) while(1) { malloc(1); } return 0;}
关键词:
相关阅读
-
动态内存分配
动态内存分配 头文件```c include include include include include` -
新买的手机号被别人注册了微信怎么办 ...
1、使用新的号码,登录微信,想要通过验证码取回密码也是不成。2、其实 -
巴沙鱼的家常做法视频(巴沙鱼的家常做法)
1、菜谱简介红糖是甘蔗经榨汁,通过简易处理,经浓缩形成的带蜜糖,除 -
卡宾(02030)将于9月1日派发中期息每股0.7港仙
智通财经APP讯,卡宾(02030)发布公告,该公司将于2023年9月1日派发截至 -
韶关丹霞英才卡申办流程 韶关丹霞英才...
丹霞英才卡由申办人个人或所在单位主管部门统一申办,申办可通过线上或 -
帝科股份:公司没有您说的相关业务与产品
帝科股份(300842)08月04日在投资者关系平台上答复了投资者关心的问题。 -
卡宾(02030)发布中期业绩,溢利1643.7万...
智通财经APP讯,卡宾(02030)发布截至2023年6月30日止6个月中期业绩,收 -
盛天网络(300494.SZ):聘任邝耀华为副总...
格隆汇8月4日丨盛天网络(300494)(300494 SZ)公布,公司于2023年8月3日 -
公积金管理中心周末上班吗 公积金去哪...
公积金管理中心周末不上班,一般上班时间是周一至周五上午:9:00—12:00 -
四川南充:构建“标准化+12309”检察服...
本报讯(张东)构建起12309检察服务标准体系,其中2项标准为全国首... -
滨江集团拟在杭州城东新城建13幢高层 ...
滨江集团拟在杭州城东新城建13幢高层毛坯均价不高于42000元 平方米,毛 -
黑龙江省大兴安岭地区松岭区市场监管局...
近日,黑龙江省大兴安岭地区松岭区市场监管局在辖区内组织开展产品质量 -
电脑微信上显示个人磁盘已满(电脑微信...
1、打开电脑登录微信,点击左上角的三横图标,点击设置选项。2、点击文 -
国家发改委:下半年经济将在上半年持续...
国家发改委:下半年经济将在上半年持续恢复的基础上保持稳定向好态势, -
怎样把qq小世界关掉 怎样把qq小世界关掉
1、打开手机QQ,点击左上角的头像。2、进入页面,点击左下角的设置,选 -
安徽寿县联合清理整顿人力资源市场
近日,安徽省寿县市场监管局、寿县人力资源社会保障局以定向抽查的方式 -
微信天天被拉进群怎么办(微信一直被拉...
微信天天被拉进群怎么办,微信现在还不能防止或者设置禁止被拉入群,微 -
海河乳品公司顺利通过欧盟IFS Food液态奶认证
海河乳品公司顺利通过欧盟IFSFood液态奶认证匠心品质实力护航推动企业 -
烤箱烤山药多长时间(烤箱烤山药多长时...
1、烤箱烤山药温度调到200度烤20-30分钟就能熟了,如果温度低的话就需 -
加快实现“七个动态”闭环管理目标
近日,交通运输部办公厅转发浙江、江西、湖南公路建设市场动态监管有关