C++数组声明问题
C++ array declare issue
这段代码给了我段错误:
#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 和其他环境应该有类似的选项。
相关文章:
- Visual Studio中的函数声明和函数定义问题
- 如何在标头中声明(或定义)函数的问题
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 我在范围内未声明的错误类有问题
- 使用静态成员声明类时遇到问题
- 为<vtkDataArray> VTK 非结构化网格声明 vtkSmartPointer 类型的变量时出现问题
- GLUT 问题:重新声明 c++ 内置类型'wchar_t'时出错
- 如何解决这个正向类声明问题
- public:静态常量字符串声明/初始化问题
- C++ Windows.h 的问题,在 vs17 中非法声明匿名'struct'
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 使用 C++17 扩展使用声明时出现问题
- 我在C++程序中声明变量时遇到问题
- 我在 c++ 中声明字符串类型时遇到问题
- 在函数本身而不是在主函数中声明由参数限定的变量有什么问题?
- 单独的类声明和方法定义文件问题
- 类中成员函数声明的问题
- C++ 03 类模板 这是转换构造函数还是转换运算符?以及如何声明解决此问题的方法
- 特征张量的问题:声明矛盾
- C++问题:声明冲突