inf*_*ler 2 c++ linux segmentation-fault
在一些内存测试中,我做了以下程序的段错误:
#include <string>
#include <iostream>
using namespace std;
int main()
{
cout << "Beginning Test" << endl;
const int N = 2000000;
string sArray[N];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于我在打印"Beginning Test"之前得到了段错误,我在GDB中运行它并检查了回溯,我得到的唯一的东西是:
程序接收信号SIGSEGV,分段故障.
Main.cxx中main()中的0x00000000004008c5:11
11字符串sArray [N];
(gdb)bt
#0 0x00000000004008c5在Main.cxx:11的main()中
对我来说最奇怪的是,如果我将N设置为1000000(1M)而不是2000000(2M),我就不会得到段错误.
可能是什么问题的任何线索?
我正在使用Linux Red-Hat 2.6.18和g ++(GCC)4.1.2.
谢谢!
fge*_*fge 15
堆栈溢出...
你确实是故意的,不是吗?
您正在溢出堆栈,由于某种原因,输出不会被刷新.2M strings是相当多的记忆.尝试使用heap而不是stack.
最重要的是,使用vector而不是阵列,并不再担心手动分配.