Search code examples
c++mingwstack-overflow

C++ stack overflow on Windows 8 and MinGW


I wrote the following C++ code. It is compiled on Windows 8 with MinGW (from msys). If I run it Windows will stop it and give a stack overflow error (C00000FD). What's the problem?

#include <iostream>
using namespace std;

class Test{
  public:
    int txt[1000];
};

int main(){
  Test a[1000];
  return 0;
}

What should I do, say, if I want to store a picture the size of 1920*1080? It'll be 1920*1080*4 bytes.


Solution

  • Each Test object contains 1000 integers, likely clocking in at about 4kb each.

    In main you are creating an array of 1000 objects for a total of 4MB. Your stack can't hold 4 megs.

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms686774%28v=vs.85%29.aspx says a common default is 1MB.

    Note that

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

    Will probably work just fine. std::vector does not store its contents on the stack like a local array does.