堆栈推送导致严重错误
Stack push causes critical error
我是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。这对我很有效。
相关文章:
- gdb错误:Backtrace已停止:上一帧与此帧相同(堆栈已损坏?)
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的 int main() 中出现堆栈溢出错误
- 堆栈中大小变量输入错误 (C++)
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 前缀表示法 C++,分段错误(堆栈和队列)
- 下面的代码给我错误***堆栈粉碎被检测到的***:
- 释放内存时出现严重错误
- std::Error_code的错误堆栈
- 分段错误:堆栈溢出
- 变量周围的调试错误堆栈已损坏
- 带有严重错误处理的简单添加代码
- 堆栈空间不足错误(堆栈溢出错误)
- 我的链接列表代码出现了严重错误
- 严重错误->c0000374
- Boost.Log - 记录应用程序的严重错误
- c++奇怪的编译错误,严重错误
- 检测到严重错误 c0000374 - C++ dll 将指针断开分配给 C# 的内存返回
- 堆栈推送导致严重错误