Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;Windows 8和MinGW上的堆栈溢出 我写了以下C++代码。它是在Windows8上用MinGW(来自msys)编译的。如果我运行它,Windows将停止它并给出堆栈溢出错误(C00000FD)。有什么问题吗 #include <iostream> using namespace std; class Test{ public: int txt[1000]; }; int main(){ Test a[1000]; return 0; } #包括 使用名称空间std; 课堂测试{ 公众: int-txt[1000]; }; int main(){ 测试a[1000]; 返回0; }_C++_Mingw_Stack Overflow - Fatal编程技术网

C++;Windows 8和MinGW上的堆栈溢出 我写了以下C++代码。它是在Windows8上用MinGW(来自msys)编译的。如果我运行它,Windows将停止它并给出堆栈溢出错误(C00000FD)。有什么问题吗 #include <iostream> using namespace std; class Test{ public: int txt[1000]; }; int main(){ Test a[1000]; return 0; } #包括 使用名称空间std; 课堂测试{ 公众: int-txt[1000]; }; int main(){ 测试a[1000]; 返回0; }

C++;Windows 8和MinGW上的堆栈溢出 我写了以下C++代码。它是在Windows8上用MinGW(来自msys)编译的。如果我运行它,Windows将停止它并给出堆栈溢出错误(C00000FD)。有什么问题吗 #include <iostream> using namespace std; class Test{ public: int txt[1000]; }; int main(){ Test a[1000]; return 0; } #包括 使用名称空间std; 课堂测试{ 公众: int-txt[1000]; }; int main(){ 测试a[1000]; 返回0; },c++,mingw,stack-overflow,C++,Mingw,Stack Overflow,比如说,如果我想存储1920*1080大小的图片,我该怎么办?它将是1920*1080*4字节 我认为Windows中的默认堆栈大小是1MB。当您分配1000^2个整数(每个整数都有4个字节)时,您试图在堆栈上放置超出其容量的数据。我认为Windows中的默认堆栈大小是1MB。当您分配1000^2个整数时,每个整数都有4个字节大,您试图在堆栈上放置超过其容量的整数。每个测试对象包含1000个整数,每个整数的时钟可能大约为4kb 主要是创建一个包含1000个对象的数组,总容量为4MB。你的堆栈不能

比如说,如果我想存储1920*1080大小的图片,我该怎么办?它将是1920*1080*4字节

我认为Windows中的默认堆栈大小是1MB。当您分配1000^2个整数(每个整数都有4个字节)时,您试图在堆栈上放置超出其容量的数据。

我认为Windows中的默认堆栈大小是1MB。当您分配1000^2个整数时,每个整数都有4个字节大,您试图在堆栈上放置超过其容量的整数。

每个测试对象包含1000个整数,每个整数的时钟可能大约为4kb

主要是创建一个包含1000个对象的数组,总容量为4MB。你的堆栈不能容纳4兆

表示常见的默认值为1MB

注意

std::vector<Test> a(1000);
std::向量a(1000);

可能会很好用
std::vector
不像本地数组那样将其内容存储在堆栈上

每个测试对象包含1000个整数,每个整数的时钟频率大约为4kb

主要是创建一个包含1000个对象的数组,总容量为4MB。你的堆栈不能容纳4兆

表示常见的默认值为1MB

注意

std::vector<Test> a(1000);
std::向量a(1000);

可能会很好用
std::vector
不像本地数组那样将其内容存储在堆栈上

测试对象的大小至少为4000字节(取决于平台的int大小)。您正在尝试创建一个包含1000个
Test
对象的数组,该数组将为4000000字节或接近4MB。这几乎肯定会超过程序的默认堆栈大小。您可以使用一些编译器选项来更改这一点,但问题应该是您到底想做什么

您应该在堆上而不是堆栈上存储大型对象

事实上,您可以使用MinGW中的以下选项根据以下内容更改默认堆栈大小:


但同样,最好不要将大型对象存储在堆栈上。

测试对象的大小至少为4000字节(取决于平台的int大小)。您正在尝试创建一个包含1000个
Test
对象的数组,该数组将为4000000字节或接近4MB。这几乎肯定会超过程序的默认堆栈大小。您可以使用一些编译器选项来更改这一点,但问题应该是您到底想做什么

您应该在堆上而不是堆栈上存储大型对象

事实上,您可以使用MinGW中的以下选项根据以下内容更改默认堆栈大小:


但同样,最好不要将大型对象存储在堆栈上。

最有可能的是,您的堆栈大小实际上不足以容纳1000 x 1000 x 4字节。提供一个
std::向量a(1000,0)相反。如果1000中的一个是100,则运行平稳。很可能您的堆栈大小实际上不足以容纳1000 x 1000 x 4字节。提供一个
std::向量a(1000,0)相反。如果1000中的一个是100,则运行平稳。为了更明确:
a
为4MB,堆栈为1MB。试图将4MB的内容放入1MB房间会导致溢出…更明确地说:
a
是4MB,堆栈是1MB。试图将4MB的内容放入1MB的房间会导致溢出。。。