我有以下简单程序:

#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中的Release版本中会发生这种情况。 (VC10可以)。查看调用堆栈,它发生在boost \ intrusive \ rbtree_algorithms.hpp中的rebalance_after_insertion()处。有人遇到过类似的问题吗?

最佳答案

如果有人遇到这种情况,则问题似乎与特定版本的boost(在我的情况下为1.55.0版)有关。它还仅在发布配置中以及应用优化时(即'/ O1','/ O2'或'/ Ox')发生。使用Boost v.1.58解决了该问题。

关于c++ - 在VC11上boost::interprocess::managed_windows_shared_memory崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22050745/

10-11 22:36
查看更多