C语言的free是怎么释放内存的?值和地址改变吗?释放后还能再次调用或者赋值吗?局部变量释放和fr
C语言的free是怎么释放内存的?值和地址改变吗?释放后还能再次调用或者赋值吗?局部变量释放和free一样吗?...
C语言的free是怎么释放内存的?值和地址改变吗?释放后还能再次调用或者赋值吗?局部变量释放和free一样吗?
展开
1个回答
展开全部
您好,楼上说的不准确,也不是很完整。
关于用malloc分配的内存,在调用free释放后,该内存的状态,有以下几点说明:
1.调用free释放掉所分配的内存后,表明该内存可以被别人使用,也就是说,其他地方调用malloc后,可以分配到该内存
2.关于free释放该内存后,该内存中的数据,我们只能认为是脏数据;也就是说,这部分数据可能存在并且维持原来的值,也可能被清空,或者被修改为其他值;
由此可见,有很多中可能情况,所以,在释放了该内存后,除了要对当时分配的指针赋值为NULL,还要注意不要再去引用这部分内存,不要尝试获取这部分的值,这些已经非法。
关于用malloc分配的内存,在调用free释放后,该内存的状态,有以下几点说明:
1.调用free释放掉所分配的内存后,表明该内存可以被别人使用,也就是说,其他地方调用malloc后,可以分配到该内存
2.关于free释放该内存后,该内存中的数据,我们只能认为是脏数据;也就是说,这部分数据可能存在并且维持原来的值,也可能被清空,或者被修改为其他值;
由此可见,有很多中可能情况,所以,在释放了该内存后,除了要对当时分配的指针赋值为NULL,还要注意不要再去引用这部分内存,不要尝试获取这部分的值,这些已经非法。
追问
局部变量释放呢?和free一样情况吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询