
你用new或malloc申请内存后,系统会为你分配在堆区的内存,系统会标记内存已经被占用了,你在程序中不释放,那么在程序运行期间这些内存一直都被系统标记为只读的,其他的程序不能使用,那么这就叫做内存泄露。你的程序运行结束了,还保留着,直到电脑重启了,内存初始化了,才会释放,所以你可以知道内存泄露的危害了,在大型程序中,很可怕的。 至于你说任务管理器的内存也是一下就降下来了,那就涉及到进程的知识了
还有什么不明白的,你可以继续问……
==============================================================
这个问题才有意思
恩,我接着楼上的讲吧 ,我说windows系统的
楼上的 memorymyann说的都对
定义的局部变量,在程序编译的时候,编译器会建立函数栈,然后局部变量存放于栈中,windows系统中,栈大小为2M ,其他楼上都说了
下一个:new和malloc()分配的空间都是在堆区,堆你就可以随意申请了,系统会在系统空闲的链表中找出你要申请空间的大小,标志为已经使用了,然后就会给你用 在申请空间后,注意检测一下申请空间返会值,为NULL就是系统给你分配空间失败了,用完了之后,你需要delete或free()掉你申请的,然后系统就会标记为没有使用了
多看些内存管理的书也许对你的提高有好处
好好学习吧,兄弟……
C语言使用的内存是虚拟内存。按照功能的不同在C语言中又将虚拟内存为分三类:栈区、堆区、静态数据区,不管是单一变量还是数组,其内存分配都是这样分的。
在栈区、静态数据区、堆区会有编译器负责分配、 *** 作系统负责管理,程序员可以在堆区使用malloc()来动态分配堆内存的问题。
扩展资料
内存的分配和释放注意事项:
1、malloc和free是库函数,不是系统调用
2、malloc实际分配的内存可能会比请求的多---有些编译器分配时是以4字节为单元的
3、不能依赖于不同平台的下的malloc
4、当请求的动态内存无法满足时malloc返回的是NULL
5、当free的参数为NULL时,函数直接返回
参考资料来源:百度百科—数组
参考资料来源:百度百科—c语言
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)