C语言动态内存管理常用的函数

1.malloc函数

该函数语法如下

void * malloc(size_t size)

参数为size_t  size ,单位是字节,返回类型为void*.该函数的用法很简单,我们可以将返回的类型强转换成自己想要的类型,根据自己的需要,来转换示例代码如下:

int * p=(int*)malloc(50);
char* pp=(char*)malloc(40);

2.calloc函数

calloc函数语法如下
 

 void* calloc (size_t num, size_t size);

calloc函数是为num个大小为size(字节)的元素开辟一块空间,这块空间会初始化为0;
它的用法也很简单代码如下:
 

int main()
{
	int* p = (int*)calloc(10, sizeof(int));
	if (p != NULL)
	{
		for (int i = 0; i < 10; i++)
		{
			*(p + i) = i;
		}
	}
	for (int j = 0; j < 10; j++)
	{
		printf("%d ", *(p + j));
	}
	free(p);
	p = NULL;
	return 0;
}

上面这段代码是将开辟好的空间赋值,并打印出来;

3.realloc函数

realloc函数让动态内存管理更灵活,它的语法如下:

void* realloc (void* ptr, size_t size);

ptr是要调整的空间的起始位置,size是要调整新的空间大小;它的返回值是调整后的空间的起始位置,
但是在分配空间时分为两种情况
1.原空间后面空间足够大,此时该函数的返回值还是原来没调整空间的起始位置
2.原空间后面的空间,不够你想要的空间的大小,这是realloc函数会重新开辟一块空间,并将原空间的值拷贝回来,这时函数的返回值为开辟新的空间的起始位置.

4.free函数

这个函数说俗点就是为前面函数擦屁股的,它可以将开辟的空间释放掉.
该函数用法也很简单语法如下:
 

void free (void* ptr);

ptr是你开辟空间的起始位置,将它放到free函数中就将你开辟的空间给释放掉了.

5.补充

1.当你在开辟一块空间的时候,一定要判断,这个空间是否开辟成功,上面三个函数开辟空间如果开辟不成功,会返回空指针,也就是判断返回的是不是空指针.在介绍calloc函数那一段代码有体现.

2.当你在释放一块空间的时候,那块空间是被释放了,但是指向起始位置的指针还在,如果不将该指针置为空指针,那它就成了野指针,野指针是非常危险的.

3.上面三个函数可以和柔性数组结合使用,这里就不介绍了.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值