0
A
回答
2
什么是分段错误的在下面一行的可能原因是什么?
线路本身极不可能导致分段错误。可能发生的唯一方法是如果你已经用尽堆栈。做(gdb) x/i $pc
。崩溃指令是PUSH
还是CALL
?如果是这样,堆栈耗尽可能是原因。
如果代码是通过优化编译的,并且崩溃指令是MOVDQA
或类似错误,那么栈错误对齐可能是由于:堆栈中的某些代码没有按照16字节边界对齐堆栈目前的ABI。你是否链接了一些非常古老的归档库?您是否使用-mpreferred-stack-boundary=2
或1
构建了一些代码?馊主意!
如果(更容易)的崩溃不会真的发生在该行,而是从称为该行一些代码,特别是如果被调用代码里面malloc
,那么以前的堆腐败最有可能的原因。
要找到它,请使用Valgrind或Address Sanitizer。
+0
@Dani马上指出,问题是以前的堆腐败。 – dPol
相关问题
- 1. std :: map初始化std :: vector
- 2. 为什么不初始化std :: vector <T>初始化T?
- 3. std :: vector :: push_back抛出分段错误
- 4. 使用boost :: assign :: list_of初始化std :: vector <std :: vector <int>>
- 5. 用lambdas初始化std :: unique_ptr的std :: vector
- 6. std :: vector用于std :: array初始化
- 7. 初始化FMOD时出现错误
- 8. 初始化引用时出现错误
- 9. std :: map <MyClass,std :: vector <MyClass>>段错误。奇数
- 10. std :: vector的高效初始化
- 11. 初始化结构的std :: vector
- 12. 为什么初始化结构时会出现段错误?
- 13. 初始化多个节点时出现段错误
- 14. C++:初始化指针队列时出现段错误
- 15. 发送带有std :: vector成员的结构体时出现分段错误
- 16. 在C++中迭代std :: set <std::string>时出现分段错误
- 17. 初始化文件作用域变量时出现分段错误
- 18. 循环中的存储器初始化:空闲时出现分段错误
- 19. vector <vector<int>>需要太长的初始化
- 20. Python初始化段错误
- 21. std :: vector <std :: vector <T>> vs std :: vector <T*>
- 22. C++初始化数组初始化向量时的分段错误
- 23. VECTOR初始化C++
- 24. iterate std :: vector <std :: vector <char>>?
- 25. “类型'std :: vector'的右值的非常量引用类型'std :: vector&'的无效初始化错误
- 26. 使用迭代器从std :: list初始化std :: vector
- 27. 在初始化时预填一个std :: vector吗?
- 28. 为什么std :: vector在初始化时强制复制?
- 29. 初始化对象时抛出错误
- 30. 覆盖向量<vector<>>和分段错误
以前的堆损坏 – Dani
我该如何发现它? – dPol
valgrind将是一个选项 – Dani