2014-02-26 46 views
1

managed_windows_shared_memory崩潰,我有以下簡單的程序:的boost ::進程間::上VC11

#include <boost\interprocess\managed_windows_shared_memory.hpp> 
#include <boost\interprocess\shared_memory_object.hpp> 

using namespace boost::interprocess; 

int main() 
{ 
    managed_windows_shared_memory segment(create_only, "MySharedMemory", 655360); 
    return 0; 
} 

它崩潰,但以下情況除外:

Unhandled exception at 0x00007FF6B7741664 in Server.exe: Stack cookie instrumentation code detected a stack-based buffer overrun. 

這只是發生在VC11發佈版本。 (VC10很好)。查看調用堆棧,它發生在boost \ intrusive \ rbtree_algorithms.hpp中的rebalance_after_insertion()處。有沒有人遇到類似的問題?

+1

堆棧幀被損壞,編譯器沒有爲boost對象分配足夠的空間。到目前爲止,最常見的原因是你鏈接錯誤的版本或錯誤的增強版本。就像你用VC10構建的那個一樣。或者調試版本。 –

+0

雙重檢查了構建,但它獲得了正確版本的boost。 – imback82

+0

我有同樣的問題,我很確定我使用了正確版本的boost。它也只發生在'/ O2'優化標誌。 –

回答

1

如果有人會遇到這個問題,這個問題似乎與代碼生成相關的一個特定版本的boost(在我的情況下v 1.55.0)。它也只發生在釋放配置和應用優化時(即'/ O1','/ O2'或'/ Ox')。使用Boost v.1.58解決了這個問題。

相關問題