我很好奇是否可以确定数组在C++中可以拥有的最大大小.
#include <iostream>
using namespace std;
#define MAX 2000000
int main()
{
long array[MAX];
cout << "Message" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个编译得很好,但是一旦我运行它就会出现段错误(即使实际上没有引用数组).我知道这也是数组大小,因为如果我将其更改为1000000它运行得很好.
那么,是否存在某种定义或某种方式#define MAX MAX_ALLOWED_ARRAY_SIZE_FOR_MY_MACHINE_DEFINED_SOMEWHERE_FOR_ME?
我实际上并不需要这个,这个问题是出于好奇的缘故.
Gre*_*ill 10
没有办法静态地确定这个,因为实际限制取决于你的线程给出了多少堆栈空间.你可以创建一个新线程,给它10兆字节的堆栈,你就可以分配一个相应更大的本地数组.
您可以在堆栈上分配的数量还取决于到目前为止已经使用了多少.