首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

new[] 和直接定义数组,内存溢出有关问题请问

2012-04-10 
new[] 和直接定义数组,内存溢出问题请教如下列代码,执行Button1Click不会溢出,而执行Button2Click会内存溢

new[] 和直接定义数组,内存溢出问题请教
如下列代码,执行Button1Click不会溢出,而执行Button2Click会内存溢出,奇怪了,开辟的内存空间是一定大的,望各位大侠指教!
//---------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 double *p;
 p=new double(1000*1000*200);
 // Edit1->Text=sizeof(p);

}
//---------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 double PP[1000][1000][200];
 //Edit1->Text=sizeof(PP);
}
//--------------------------------------

[解决办法]
第一个堆上开辟空间 

第二个栈上开辟空行 有限制 默认1M
[解决办法]

探讨
第一个堆上开辟空间

第二个栈上开辟空行 有限制 默认1M

[解决办法]
探讨

??不是很懂,查查资料。
N久没写程序了。尽管96年刚学C时,就用turbo C2.0开发了一个粗糙的打坦克游戏,呵呵!

[解决办法]
楼上说的很清楚了,第一个,p=new double(1000*1000*200);这样申请是在堆上开辟的内存,而你第二个double PP[1000][1000][200];这个是在栈上开辟的内存,这个在编译器中是有限制的,只能开辟1M的
[解决办法]
一楼正解,楼主可以去查查不同类型的变量申请内存,内存存放的地点、全局变量和局部变量存储类别

热点排行