在一些内存测试中,我做了我从下面的程序分段错误之前:非常奇怪的分段错误主要
#include <string>
#include <iostream>
using namespace std;
int main()
{
cout << "Beginning Test" << endl;
const int N = 2000000;
string sArray[N];
return 0;
}
因为我得到了赛格故障“开始测试”付印前,我在GDB中运行并检查了堆栈回溯,唯一得到的结果是:
程序接收到的信号SIGSEGV,分段错误。
Main.cxx中main()中的0x00000000004008c5:11
11 string sArray [N];
(GDB)BT
#0 0x00000000004008c5在main()在Main.cxx:11
对我来说,最奇怪的是,如果设置了N到1000000(1M)代替2000000(2M)我没有收到seg-fault。
任何线索可能是什么问题?
我使用Linux Red-Hat 2.6.18和g ++(GCC)4.1.2。
Tnx。
等待,您试图在_stack _上分配2 MB * sizeof(字符串) – fge 2011-12-29 11:21:24