请问。net有carbage colleciont机制吗
请问。net有carbage colleciont机制吗
我写了一下一个小程序,在。net环境下运行
int _tmain(int argc, _TCHAR* argv[])
{
int i=0;
try
{
for(;;)
{
new char[1000000];
cout<<(++i)<<endl;
}
}
catch(bad_alloc)
{
cout<<"operator new failed:out of store\n";
return 1;
}
cout<<"done"<<endl;
return 0;
}
因为for是一个无限循环,所以程序最终应该执行到catch语句中,然而我的程序却始终不能跑到catch语句中,是不是因为。net有carbage colleciont机制,当系统发现 new char[1000000]没有赋值给一个指针时就自动回收了那部分内存空间?
问题点数:20、回复次数:5Top
1 楼steedhorse(晨星)回复于 2006-03-03 21:16:04 得分 5
你新建的是什么项目啊?
偶新建个一个Win32空项目(非托管)用VC2003跑你的程序,最终顺利抵达catch block。Top
2 楼iceprince83(iceprince83)回复于 2006-03-03 23:36:25 得分 0
我用的是.NET2003,托管我不知道在哪里设置,是托管的问题吗Top
3 楼iceprince83(iceprince83)回复于 2006-03-03 23:43:07 得分 0
补充一下,我建的是win32控制台项目Top
4 楼Kenmark(fenix)回复于 2006-03-04 12:59:32 得分 15
………………是Garbage collect,垃圾回收算法.net的托管堆应该都有回收机制,。NET的问题,怎么到C区来了Top
5 楼iceprince83(iceprince83)回复于 2006-03-07 21:55:42 得分 0
好,明白了,谢谢,因为我不是很确定是。net编译器的问题,还是c++程序的问题,所以就贴在这个板块上了,不好意思Top




