当前位置:网站首页>动态内存开辟(C语言)
动态内存开辟(C语言)
2022-08-05 08:33:00 【InfoQ】
内存的三个区域
为什么要使用动态内存开辟
动态内存分配的函数
free
free(p);
p=NULL;
malloc
void* malloc (size_t size);
打印错误原因的一种方式
#include<string.h>
#include<errno.h>
#include<stdio.h>
printf("%s\n",strerror(errno));
由malloc和free的实例演示
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
int main()
{
int* p = (int*)malloc(10 * sizeof(int));
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;
}
realloc
int* p = (int*)malloc(20);
int* p2 = realloc(p, 40);
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
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;
}
}
int* p2 = realloc(p, 40);
if (p2 != NULL)
{
p = p2; //把p2的首地址又给了p,做到了衔接
int i = 0;
for (i = 5; i < 10; i++)
{
*(p + i) = i;
}
for (i = 0; i < 10; i++)
{
printf("%d ", *(p + i));
}
}
free(p);
p = NULL;
return 0;
}
边栏推荐
猜你喜欢
随机推荐
ps怎么拼图,自学ps软件photoshop2022,PS制作拼图效果
宝塔实测-搭建中小型民宿酒店管理源码
DPU — 功能特性 — 安全系统的硬件卸载
Redis cache and existing problems--cache penetration, cache avalanche, cache breakdown and solutions
程序设计中的感悟
tear apart loneliness
DPU — 功能特性 — 网络系统的硬件卸载
国际原子能机构总干事称乌克兰扎波罗热核电站安全形势堪忧
RedisTemplate: 报错template not initialized; call afterPropertiesSet() before using it
基于多块信息提取和马氏距离的k近邻故障监测
网页直接访问链接不让安全中心拦截
Embedded Systems: Basic Timers
画法几何及工程制图考试卷A卷
[Structural Internal Power Cultivation] Structural Realization Stages (2)
Codeforce 8.1-8.7做题记录
spark集群部署(第三弹)
Luogu P4588: [TJOI2018]数学计算
作为一个男人必须明白的22个道理
SVG big fish eat small fish animation js special effects
What is a good movie to watch on Qixi Festival?Crawl movie ratings and save to csv file