在一些內存測試中,我做了我從下面的程序分段錯誤之前:非常奇怪的分段錯誤主要
#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