[英]How to allocate complicated structure in shared memory using boost::interprocess::vector?
[英]Cannot allocate memory using boost test
我有一個這樣的測試用例:
BOOST_AUTO_TEST_CASE(Test) {
std::thread([](){
BOOST_CHECK(system("script.sh") >= 0);
}).detach();
//other checks here
}
當我只運行這個測試套件時,一切都很好。 當我運行 80 次測試時,斷言失敗, system
返回的值是“無法分配內存”。 有什么解決方法嗎?
如果您單獨運行測試並且它可以工作,而在非隔離(與其他測試)中運行此測試並且它失敗了,那么您的測試程序的 state 發生了“某些事情”並且需要修復。
例如,
這不完全是 Boost.Test 問題,Boost.Test 只是向您顯示程序中某處存在(相當大的)問題。 確定的方法是單獨運行,可能多次運行,例如,您可以真正觀察到對 memory 的需求增加甚至崩潰。 Boost.Test 努力減輕這些崩潰(攔截操作系統的信號),並根據操作系統顯示 memory 泄漏,但這並不神奇。
隔離問題的其他方法是使用其他程序,例如valgind
或asan
/ tsan
。
最后一種可能性是"script.sh"
正在耗盡您操作系統的所有 memory。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.