永发信息网

C语言中是如何释放内存单元的;原理又是什么?

答案:2  悬赏:0  手机版
解决时间 2021-04-01 02:16
C语言中是如何释放内存单元的;原理又是什么?
最佳答案
C语言中使用free函数释放动态分配的内存单元。
1、free函数:
原型:void free(void *ptr);
功能:释放malloc(或calloc、realloc)函数给指针变量分配的动态内存;
头文件:malloc.h或stdlib.h;
2、为了避免释放已经释放了内存的指针内存,或没有释放内存,在C语言中最好是在定义指针时赋初值NULL,释放后立即赋NULL,释放时检查指针值再决定释放就避免释放错误了,例如:

int *a = NULL
int *b = (int*) malloc(sizeof(int) * 10);
a= b;

if(a != NULL) {free(a);a=NULL;}
if(b != NULL) {free(b);b=NULL;}
全部回答
C管理内存大致可以理解为两种,分配在栈上的,一个是分配在堆上的。

临时变量,动态变量,分配在栈上,运行完,直接弹出栈,就没了。
分配在堆上的内存,释放的时候,基本上可以理解为,指针不指这里了。也就失去了对这块内存的控制。其实所谓的释放。字面意思容易让人理解错。
有些机器有些操作系统,会在释放的时候清空这段内存,但是这种做法效率不高,但是安全,很少有机器这么做,多数都是所谓释放,就是不让你控制这块内存了而已。追问那又是怎样失去控制的呢?追答我觉得就像是指针的关系一样,p指向一块连续的内存,那么你可以利用p来管理访问这块内存,所谓失去控制,就是p不再指向这里了,这块内存被回收到系统内核中,可以用来分配给别人,这样就叫失去控制
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国软床十大品牌
LOL召唤师峡谷打野有什么用?麻烦帮我把12个
车内驾驶室内有积水,什么原因
武汉邦德艺考今年的本科升学率是多少?
今天早上玩cf 发现浙江一区大神好多,特别是
去抚顺清永陵,怎么去,全部行程大概得多少钱
有田不种,必无收成;有钱不用,必空积聚。
1065513305356062这是什么业务的号码
从未想过不会拒绝你,这句话什么意思
63减19等于44时先想几加1等于几
【剑网3】声望物品在哪里购买?
单选题我国古代“文彦博数豆”的故事,说的是
光听单词对英语听力有好处吗
雍正七星盘是民窑还是官窑
马向阳下乡记的刘玉彬怎么和马向阳的朋友是一
推荐资讯
漂亮主妇的介绍
如果网络游戏涉嫌违法在游戏的损失可以追回吗
蔡甸区各高中的录取分数线
河北冀县和冀州是一个地方么?
龙年运势的介绍
请问如何用草籽种草坪?
我的世界1.7.10鱿鱼怎么生成
怎么开通新浪存钱罐啊?
收集有关青藏铁路,铁路建设者事迹的资料两个
于2015年5月5日(以当地邮戳为准 是什么意思
北京哪里有卖古风簪子的,我住在东城区,要近
老娘歌歌词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?