为了账号安全,请及时绑定邮箱和手机立即绑定

C语言销毁一个结构体不free直接等于NULL可以吗

C语言销毁一个结构体不free直接等于NULL可以吗

芜湖不芜 2019-04-14 11:17:46
各位大神如果我一个结构体的某个属性存了1000个数据然后现在不想用了我直接把这个结构体的这个属性==NULL是不是就表示这个结构体又成了一个全新的结构体了但是我并没有free那么是不是堆内存里面始终有一块区域没有被回收呢?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

C语言中内存分配会在三个地方:堆栈寄存器所谓的栈、入栈、出栈、栈溢出就是指这个,在函数中分配,在函数中释放,栈的空间比较小,变异的时候就分配啦。详情你可以去看看函数是如何调用的。你inta=1024的时候就是在这分配的。所谓的堆,我们先来聊聊虚拟内存。你一定听过这句户:32位的系统最大寻址是4g,这个寻址对应的就是你在堆上分配的内存,懂伐?32位下每个进程最多分配4g,内存是咋分配的不用你管,只需要找系统要就可以了,你malloc的时候就是在这儿分配的。所谓的寄存器变量,就是volatileregister这个关键字修饰的变量,我也没用过,似乎是告诉寄存器这个变量尽量给用寄存器存储。可能做游戏的时候会遇到吧。现在你明白为什么会内存泄露了么?系统给你4g内存分配的能力,不是说让你一定要用满这4g,而是你有分配的能力,用完记得还给系统,所以malloc需要free,new需要delete(C++)(年代久远,可能有误,参考就好)
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 378 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信