C++数组声明问题

C++ array declare issue

本文关键字:问题 声明 数组 C++      更新时间:2023-10-16

这段代码给了我段错误:

#include <stdio.h>  
int main(int argc,char** argv[]){  
int ar[20000000];  
return 0;  
}  

但是如果我将数组的大小减小 0 - 那么它很好。我是否超过了最大尺寸?如果我想存储这么多的整数怎么办?谢谢。

这可能与您

尝试在堆栈上分配超过 70 MB 的数据有关。Windows 的默认堆栈大小为每个线程 IIRC 1 兆字节。尝试将其分配给带有new的免费商店,如下所示:

int* ar = new int[20000000];

当你用完它时,delete[]它:

delete[] ar;

你有堆栈溢出:D一个真实的。

使用 new 在堆上分配内存

int* ar = new int[ 20000000 ];
// do stuff with ar
delete[] ar; // do **not** forget about this

堆栈上的int ar[20000000]声明,占用 appx 70MB+ (76.2939453MB) 的内存...也许你的空间用完了?

使用 new 在堆上进行分配。

您可能超出了编译器强制执行的堆栈帧允许的大小。如果您要动态分配空间,例如:

int 数组 = new int[SIZE]

您将受到操作系统和硬件的限制,而不是编译器。(这是因为动态分配内存将其存储在堆上,而本地声明的变量存储在堆栈上,堆栈具有更严格的大小限制。

如果我

没记错的话,400万是极限

如果你真的想在堆栈上分配这个数组,你可以。 您只需要增加堆栈大小。 你没有说你正在使用什么编译器/链接器,但Visual Studio C++的说明在这里:http://msdn.microsoft.com/en-us/library/tdkhxaks.aspx 和其他环境应该有类似的选项。