关于malloc和realloc的用法使用区别

本文探讨了realloc和malloc在C/C++编程中的应用及其区别。详细解释了realloc如何在已分配的内存基础上进行调整,以及malloc如何分配新的内存空间。通过一个具体的程序实例展示了如何使用这两种函数来动态创建和管理内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在写第二个关于游戏的项目 ,贪吃蛇,这个估计很多人编过,刚开始编辑,所以遇到了一些比较easy的问题,但是对我来说还是比较有记得意义的,realloc和malloc的使用区别;
     (1)realloc(void *ptr,size_t size);realloc是在已经分配好内存块的重新分配,如果开始指针分配为NULL,则和malloc用法一致,否则如果开始内存块小,保存原内存块,再次基础新增,如果是开始内存块大,则在此基础减去尾部内存块。返回值是分配好内存块的头指针。
        (2)malloc(zise_t size);malloc是对没有分配过内存块的直接进行分配,返回值是分配好内存块的返回值是分配好内存块的头指针。通过malloc分配好的内存块一般要用free(size_t size)来释放内存块。
         (3)通过realloc和malloc来申请的内存块是返回的指针是无符号类型的,所以在返回后程序员可以定义为任意类型的指针。
            下面是自己实验的一个程序,是看别人的模仿的,感觉真是大神,通过二级指针来定义一个二维数组,然后进行取值,感觉很强,以后有机会自己希望能用上。
 

#include<iostream>
using namespace std;
#define len 3
void main()
{
	int s;
	int **num = NULL;
	num = (int **)realloc(num, sizeof(int*)*len);
	for(int i=0;i<3;i++)
	{
		num[i] = (int *)malloc(sizeof(int) * 2);
	}
	for (int i = 0; i < len; i++)
	{
		cout << "请输入数字:";
		cin >> s;
		num[i][0] = 1;
		num[i][1] = s;
		cout << num[i] << endl;
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值