堆栈推送导致严重错误

Stack push causes critical error

本文关键字:严重错误 堆栈      更新时间:2023-10-16

我是C++的新手,目前正在使用STL容器。我在执行nodeStack.push(startnode)时遇到了一个严重的问题——编译器显示了一个

检测到严重错误c0000374

以下代码显示出现上述错误的功能:

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。

尝试int* val = new int[adjlist.size()];您当前正在分配单个int并初始化其值,而不是分配int数组。

堆栈结构正在损坏,因为它位于内存堆栈中的指针旁边。

nodeStack.push并不是你真正的问题。您正在声明int*val-一个指向int的指针,然后用列表的大小初始化val处的整数。你真的想要int*val=new int[adjlist.size()];

您可能使用的是x86 DLL;当我在VS4.5中遇到这个错误时,我将目标平台更改为x86,并切换到.Net 4.0。这对我很有效。