卖菜的鸟 发布留言 2008-6-18 17:20
动态分配内存后不释放 再程序结束后 那块内存会被释放吗?
动态分配内存后不释放 再程序结束后 那块内存会被释放吗?
ioriliao 发布留言 2008-6-18 17:22
不会...
mqh21364 发布留言 2008-6-18 17:43
不会,要不怎么叫“内存泄漏”呢!
爱喝牛奶的猫咪 发布留言 2008-6-18 17:55
会!
[全屏欣赏]
now 发布留言 2008-6-18 18:39
谁大得过OS,程序都结束了,哪有不归还的道理
卖菜的鸟 发布留言 2008-6-18 18:46
程序结束时 我想操作系统会 做这些事吧[tk05]
lingluoz 发布留言 2008-6-18 19:39
会放的。。内存泄漏是指程序运行中的。
StarWing83 发布留言 2008-6-18 23:35
额……事实上,有些不会自动释放的,主要是很多涉及到进程间资源共享的问题。
比如共享的资源,GDI资源,全局内存HGLOBAL,虚拟页面Virtual Heap这些都不会自动释放,事实上,有些程序运行久了关了再开是没有效果的,必须重启电脑。这也是COM提供了周期性地重启的方法的根本原因。
但是malloc/free和new/delete的内存是会释放的。因为本地堆是由运行库管的。不管你最后释放没有,申请的虚拟页会被一股脑儿释放掉,所以不会造成泄露。
[ 本帖最后由 StarWing83 于 2008-6-18 23:38 编辑 [/it]]
卖菜的鸟 发布留言 2008-6-18 23:46
很好很详细 谢谢[tk05]
爱喝牛奶的猫咪 发布留言 2008-6-18 23:47
一般算法编程也用不上那些。。。GDI倒是会自动释放的
不过还有一些资源,我根本查不到怎么去释放。。。
[全屏欣赏]
StarWing83 发布留言 2008-6-19 00:18
GDI会自动释放么?
你PostMessage给其他进程一个HDC试试看?
而且,Win3.1时代,整个系统只有5个HDC- -
lqcheng 发布留言 2008-6-19 00:34
学习了
无语雨季 发布留言 2008-6-19 13:36
会不会释放不重要
按求问的人意思理解,那是不会释放的.
当然不同的情况,程序运行完后会把内存交还给系统.其实系统会不会自动释放不重要,重要的是编程习惯.
有申请了开辟内存空间,必须有释放的操作.
在不同的环境运行程序,机制是不一样,比如嵌入式产品像手机,内存本来就少,有申请了开辟空间,就得释放,否则造成内存泄露就会死机.
lyw19841018 发布留言 2008-6-19 13:52
我是新手,请大家指教!
我看了两边书,你们所说的那些术语我都没有见过,按我所了解的,动态内存用完后,是会被释放的!请大家指教,我现在该如何深入的去了解C语言?QQ:70388097
界水乘风 发布留言 2008-6-19 14:49
#include
#include
int main()
{
int *p;
int i;
for(i=0;;i++)
{
p = (int*)malloc(sizeof(int)*8000);
if(p == NULL) break;
}
printf("%d\n",i);
return 0;
}
试试这个程序能运行几次,结果是不是差不多,就知道了。ioriliao 发布留言 2008-6-19 16:29
[un]lyw19841018[/un] 在 2008-6-19 13:52 的发言:[/bo]
我看了两边书,你们所说的那些术语我都没有见过,按我所了解的,动态内存用完后,是会被释放的!请大家指教,我现在该如何深入的去了解C语言?QQ:70388097 |
如果想深入地理解C语言那么,可以先把玩下指针,宏定义.然后再学学汇编,之后再回过头来把玩下C.然后看下linux内核源码,从0.01版开始看.光影门徒 发布留言 2008-6-19 16:30
受教了coming 发布留言 2008-6-19 20:06
~~~学到了~~
页: [1]