当前位置:网站首页>动态内存开辟(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;
}
边栏推荐
- 吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第二节:神经网络基础(下)
- Redis缓存以及存在的问题--缓存穿透、缓存雪崩、缓存击穿及解决方法
- [Untitled] Long-term recruitment of hardware engineers-Shenzhen Baoan
- SVG big fish eat small fish animation js special effects
- 【无标题】目录
- Thinking after writing a code with a very high CPU usage
- EA谈单机游戏:仍是产品组合中极其重要的部分
- 存储过程编写经验和优化措施
- 长期招聘嵌入式开发-深圳宝安
- tear apart loneliness
猜你喜欢
D2--FPGA SPI接口通信2022-08-03
unity urp 渲染管线顶点偏移的实现
MySQL 数据库 报错 The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
[Structural Internal Power Cultivation] Structural Realization Stages (2)
v-if/v-else根据计算判断是否显示
Redis cache and existing problems--cache penetration, cache avalanche, cache breakdown and solutions
Ethernet Principle
【结构体内功修炼】结构体内存对齐(一)
Ethernet Principle
复现一次循环和两次循环
随机推荐
MySQL database error The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
写出了一个CPU占用极高的代码后引发的思考
青苹果论坛重新开放
Beautifully painted MM set
最 Cool 的 Kubernetes 网络方案 Cilium 入门教程
v-if/v-else根据计算判断是否显示
MySQL 数据库 报错 The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
unity 头发的渲染
高效使用数码相机的诀窍
动态库之间回调函数使用
Ethernet Principle
Detailed explanation of DNS query principle
love is a sad song
真正爱你的女人是这样的
Redis缓存以及存在的问题--缓存穿透、缓存雪崩、缓存击穿及解决方法
作为一个男人必须明白的22个道理
创业者如何吸引风险投资商
谷歌零碎笔记之MVCC(草稿)
【无标题】目录
Chapter 12 Bayesian Networks