动态内存分配
2023-08-04 13:26:45
来源:
博客园
#动态内存分配##头文件```c#include#include#include#include#include`
【资料图】
动态内存分配
头文件
#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;}
[责任编辑:]
最近更新
- 动态内存分配
- 【温馨提示】虚开发票的风险如何防范?
- 美股异动 | 能链智电(NAAS.US)收涨超5% 三部门联合发布绿电新政
- 360贷款
- 短线防风险87只股短期均线现死叉
- 沙特宣布将自愿减产石油措施延至9月底
- 风云三号F星成功发射
- 《食品分析基体标准物质研制通用技术要求》等技术规范征求意见
- 002427股票分析报告:2021年上半年市场表现与投资建议
- 宇邦新材:融资净偿还409.55万元,融资余额2772.44万元(06-20)
- 消防突击队徒步进山 救出130余名群众
- “换位体验走流程”如何走进民心
- 黄芽白菜炒肉?
- 8月3日基金净值:广发高端制造股票A最新净值1.9857,涨1.13%
- 北京再发山洪灾害风险提示:三个地区山洪发生可能性很大
- 底线在哪个台重播过(底线在哪个台重播)
- 中国工信部:上半年光伏产业链主要环节产量高速增长
- 安卓板王!三星Galaxy Tab S9系列发布:5999元起
- 郑州:满足改善性住房需求,鼓励在郑各商业银行依法有序调整存量个人住房贷款利率
- 郭台铭:若台海开战美股市10秒崩盘 世界会发生天翻地覆的变化
- 年终奖个人所得税计算方法与公式2023年最新 年终奖个人所得税计算方法
- 山西雁门关景区开放时间是几点到几点?(淡旺季)
- 侵害隐私权会触犯刑法吗,主要表现是什么?
- 城关镇:“一窗通办”跑出便民利企“加速度”
- 北京心脏病专科医院哪家最好(北京心脏病最好医院)
- 最高涨5千!福特新锐际售16.98-21.98万!配置升级
- 鞍山钢铁网络终端准入工作提前实现全覆盖
- 黑马扎堆,众星云集,这部综艺赚足了眼球
- 拉卡拉上半年净利润增超五成 对外接入项目年内增163%
- 揭阳惠来“舞九鳄”