我是C ++的新手,目前正在使用STL容器。
我在执行nodeStack.push(startnode)
时遇到了严重问题 - 编译器出现了
检测到严重错误c0000374
Followign代码显示出现上述错误的函数:
vector<int> Graph::iterativeDepthSearch(map<int, vector<int>> adjlist, int startnode) {
stack<int> nodeStack;
vector<int> visitList;
// Knotenbesuchsliste initialisieren
int* val = new int(adjlist.size());
for (int i = 0; i < (int) adjlist.size(); i++) {
val[i] = 0;
}
int cnt = 1;
nodeStack.push(startnode);
....
}
错误发生在行nodeStack.push(startnode);
中,startnode初始化为0。
答案 0 :(得分:15)
尝试int* val = new int[adjlist.size()];
您当前正在分配单个int并初始化其值,而不是分配一个int数组。
堆栈结构正在损坏,因为它位于内存堆栈中的指针旁边。
答案 1 :(得分:4)
nodeStack.push真的不是你的问题。您正在声明int * val - 指向int的指针,然后使用列表的大小初始化val处的整数。你真的想要 int * val = new int [adjlist.size()];
答案 2 :(得分:-1)
您可能正在使用x86 DLL;当我在VS4.5中收到此错误时,我将目标平台更改为x86并切换到.Net 4.0。这对我有用。