【C语言】动态内存管理用realloc管理更灵活

realloc------动态内存空间管理更灵活

为了合理使用内存,我们会对内存的大小做灵活的调整。那 realloc 函数就可以做到对动态开辟内存大小的调整。

头文件:# include<stdlib.h>

**void * realloc (**要调整的内存地址 , 调整之后新大小 )

void * realloc ( void * ptr , size_t size )

注意:

  • 返回值为调整之后的内存起始位置。
  • 这个函数调整原内存空间大小的基础上,还会将原来内存中的数据移动到 新的空间。· realloc在调整内存空间的是存在两种情况:

情况1:原有空间之后有足够大的空间

要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发生变化。

情况2:原有空间之后没有足够多的空间

在堆空间上另找一个合适大小的连续空间来使用。这样函数返回的是一个新的内存地址。

由于上述的两种情况,realloc函数的使用就要注意一些。

复制代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>

int main()
{
	int* p = (int*)malloc(5 * sizeof(int));
	if (p == NULL)
	{
		perror("malloc");
	}
	int i = 0;
	for (i = 0;i < 5;i++)
	{
		*(p + i) = i + 1;
	}

	//不够用,增加五个内存空间
	int* ptr = (int*)realloc(p, 10*sizeof(int));
	if (ptr != NULL)
	{
		p = ptr;
	}

	// 初始化新增加的内存空间
	for (i = 5; i < 10; i++)
	{
		*(p + i) = i + 1;
	}

	//打印
	for (i = 0;i < 10;i++)
	{
		printf("%d ", *(p + i));
	}

	//释放空间
	free(p);
	p = NULL;

	return 0;
}

输出:

1 2 3 4 5 6 7 8 9 10

相关推荐
地平线开发者20 分钟前
模型部署|征程6 量化路线怎么选:PTQ 还是 QAT?
神经网络·算法·机器学习
不会就选b31 分钟前
算法日常・每日刷题--<贪心>12
算法
xx~t1 小时前
嵌入式——51单片机3
linux·c语言·嵌入式硬件·51单片机
小羊没烦恼!1 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
山下梅子酒2252 小时前
洛谷-入门-B2042
c语言
ysu_03142 小时前
08-二叉树遍历:四种方式详解
c语言·数据结构·算法·leetcode
咸鱼老弟2 小时前
Speculative Decoding(投机采样):大模型"先猜后验",生成速度翻倍
前端·算法·ai编程
ocean21032 小时前
2025-2026年C语言专题面试高频知识点洞察
c语言·面试·面试经验
荆棘鸟智能2 小时前
AI算法持续学习与迭代怎么做?从数据闭环到灰度发布的MLOps工程实践
人工智能·算法·架构·边缘计算
Lyyaoo.2 小时前
【二分查找】【中等】搜索二维矩阵/排序数组的第一位和最后位置/搜索旋转排序数组/旋转排序数组中的最小值
java·数据结构·算法