max*_*mus 6 c++ stack-overflow
我创建了一个程序,我想调试它(或运行),在函数main中的第一个运算符之前它会中断一条消息:name.exe中0x0020f677处的未处理异常:堆栈溢出.为什么会发生这种情况以及如何解决问题?Visual C++ 2010,Win32控制台应用程序.
EDIT1:Debugger向我展示了chkstk.asm中的asm代码.
分析什么对于解决这个问题很重要?头文件中添加的东西导致了这个问题?
如果您删除了固定大小的数组,如果它的大小太大,则可能会出现此错误.
int fixedarray[1000000000];
Run Code Online (Sandbox Code Playgroud)
尝试减少长度或在堆上创建它.
int * array = new int[1000000000];
Run Code Online (Sandbox Code Playgroud)
别忘了稍后删除它.
delete[] array;
Run Code Online (Sandbox Code Playgroud)
但是即使在C函数中最好使用std :: vector而不是指针,
//...
int Old_C_Func(int * ptrs, unsigned len_);
//...
std::vector<int> intvec(1000000000);
int * intptr = &intvec[0];
int result = Old_C_Func(intptr,intvec.size());
Run Code Online (Sandbox Code Playgroud)
假设32位编译.