栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言动态内存分配

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言动态内存分配

1、malloc()和free()的使用

malloc()函数可以开辟空间,free()函数释放空间

#include 
#include 

int main()
{
	int* p = (int*)malloc(10 * sizeof(int));//向内存申请10个整形的空间,由于malloc()返回值为void*,所以需要强制转换
	if (p == NULL)
	{
		//如果未创建成功,则打印错误原因
		printf("%sn", 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;
}
2、calloc()函数的使用

该函数的功能是为num个大小为size的元素开辟一块空间,并且把空间的每一个字节初始化为0

#include 
#include 
int main()
{
	int *p = (int*)calloc(10, sizeof(int));
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", *(p + i));
	}
	return 0;
}
3、realloc()函数的使用

功能:调整动态内存开辟空间的大小

int main()
{
	int* p = (int*)malloc(20);
	if (p == NULL)
	{
		printf("%sn", strerror(errno));
	}
	else
	{
		int i = 0;
		for (i = 0; i < 5; i++)
		{
			*(p + i) = i;
		}
	}
	int* p2 = realloc(p, 40);
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", *(p2 + i));
	}
	return 0;
}

realloc()也可以开辟空间

int main()
{
	int* p = realloc(NULL, 40);//功能和malloc()相似
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号