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