读书人

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

发布时间: 2012-04-10 21:03:56 作者: rapoo

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的
[解决办法]
一楼正解,楼主可以去查查不同类型的变量申请内存,内存存放的地点、全局变量和局部变量存储类别

读书人网 >C++

热点推荐