永发信息网

c 语言中的free 函数 用法

答案:3  悬赏:0  手机版
解决时间 2021-05-09 17:21

int main(int argc, char* argv[])
{
 void *test_ptr = NULL;
 test_ptr = malloc(10);

 free(test_ptr);
 return 0;
}

 

象上面的写法对吗?free可以根据指针就知道他的大小去释放内存空间吗?

最佳答案

不能。FREE不能依靠单纯的指针去释放。


你去看看BMP文件的结构,看看很多的程序的结构,他们的结构体中都会存有数据的大小,而且因为面对的是数据流,所以大小往往被放在最开头。


同样的,你MALLOC(10) ,实际上一定会大于10,它要在内部去存储开辟内存的大小的数据,依次来决定释放的字节。



看见p - 2 的数值了吗?它就是14:10个字节的MALLOC,4字节是大小数据单元。


FREE就是根据那个数值才知道到底释放多少的。

全部回答
free只要传入需要释放的指针就好了,上面的写法从函数使用的角度来讲没问题,不过void只是表示函数是无返回类型的,不能用来声明变量吧。当然malloc函数使用时最好前面强制转换为相应类型的指针例如(int *)malloc(sizeof(int));

完全正确。

只需注意产生野指针就好了。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
地战这王和CF一样吗!
3C中月之女祭司怎么压制剑圣啊?本人比菜鸟高
海派甜心中的主体曲,爱不单行好听吗?
毕业季感谢老师祝福语,毕业祝福语
DNF漫游乱射等的技能改成HF的?会的告诉下啊
胰腺炎对生育有影响吗?
跪求coreldraw小技巧!
可以把一个QQ的所有资料数据转移到另一个QQ?
DNF华北4收游戏币1:19
雪景,人物。如何完美融为一体?
AVA有BUG吗?
穿越言情,不太长,女主叫小花(姓不记得)男
我是开鞋店的,哪里有好的品牌鞋
求阿克希亚的克星
打篮球时的位置
推荐资讯
寻仙解除师徒关系
欧泊莱的护肤品怎么样呢?
干性皮肤能用食醋洗脸吗?
怎么才能长身高啊,好郁闷
我邀请别人开通游戏人生怎么没开通啊?
3级法宝ES用的慈悲.怎样得到?
月经献血会危及生命吗
我问的问题为什么每次都不通过呢?
对幼儿的认识
QQ消费限制取消支付密码第一次莫认为QQ密码,
1991年的高考时间
虹蓝恋的文章
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?