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

各位大神如果我一个结构体的某个属性存了1000个数据然后现在不想用了我直接把这个结构体的这个属性==NULL是不是就表示这个结构体又成了一个全新的结构体了但是我并没有free那么是不是堆内存里面始终有一块区域没有被回收呢?
芜湖不芜
浏览 379回答 2
2回答

慕斯王

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

相关分类

JavaScript