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. std :: vector用於std :: array初始化
- 6. 用lambdas初始化std :: unique_ptr的std :: vector
- 7. 初始化引用時出現錯誤
- 8. std :: vector的高效初始化
- 9. 初始化多個節點時出現段錯誤
- 10. C++:初始化指針隊列時出現段錯誤
- 11. 在C++中迭代std :: set <std::string>時出現分段錯誤
- 12. Python初始化段錯誤
- 13. VECTOR初始化C++
- 14. iterate std :: vector <std :: vector <char>>?
- 15. 「類型'std :: vector'的右值的非常量引用類型'std :: vector&'的無效初始化錯誤
- 16. 在初始化時預填一個std :: vector嗎?
- 17. 爲什麼std :: vector在初始化時強制複製?
- 18. 覆蓋向量<vector<>>和分段錯誤
- 19. 初始化對象時拋出錯誤
- 20. nodejs給出錯誤在初始化V8上出現錯誤
- 21. 在初始化時調用函數時出現Javascript錯誤()
- 22. PayPal初始化時出錯
- 23. 初始化ArrayList時出錯
- 24. 錯誤`std :: vector <std :: unique_ptr < T >>`
- 25. 創建VertexArray時出現分段錯誤
- 26. std :: array <T>初始化
- 27. 有時會出現分段錯誤
- 28. 初始化列表std :: pair
- 29. 當python-ldap被初始化時httpd上的分段錯誤(11)
- 30. 在C++中初始化一個向量<vector <vector <double>>>
以前的堆損壞 – Dani
我該如何發現它? – dPol
valgrind將是一個選項 – Dani