动态分配内存与销毁(malloc、free、malloc、realloc)

本文介绍了C语言中的动态内存分配函数,包括malloc用于分配指定大小的内存,calloc一次性分配并初始化为0,realloc调整已分配内存大小,以及free用于释放内存。文中通过示例详细解释了如何使用这些函数,强调了正确释放内存的重要性,以及避免内存泄漏和错误释放的潜在问题。
摘要由CSDN通过智能技术生成

malloc函数

在数组分配空间的时候,如果十个例子九个是10个元素以内,但是有一个却为100+的,如果为了这一个数组而创建一个很大的数组,那么显然是不合理的,所以我们还要有其他的方式来创建一个动态数组。

比如vla数组(变长数组),就是一个不错的选择,今天我们还有另外一个更好的选择,malloc函数。
vla数组参见之前的博客:变长数组——VLA

和vla数组一样,动态数组不是将一个小数组拓展成一个大数组,而是在创建的时候才确定数组的大小。

函数原型:

void *malloc(size_t);//size_t是一种类型,是sizeof运算符的返回值

size_t到底是什么,这个不是重点,只要知道参数是要分配的空间大小即可。
(一般来说是unsigned int用typedof重命名来的)
重点是前面的返回值,void指针。

void指针是什么
void无类型,要是创建一个这样的变量,系统不知道该分配多少空间,就会报错;如果是指针,那么就可以指向任意一个空间,但是呢在解引用void指针时,问题又来了,系统又不知道指向的空间多大了。。。所以还是报错

强转void指针
为了进行解引用,我们就需要使用类型强转,和其他类型强转一样,加一个括号就行了。

int x = 5;
printf("%d",(float)x);

void *p = &x;
printf("%d",*(int *)p);

这样第二个输出就是5了。

所以我们也可以用相同的方式来使用malloc函数

in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值