C++ boost::进程间::VC11上的托管\u windows\u共享\u内存崩溃

C++ boost::进程间::VC11上的托管\u windows\u共享\u内存崩溃,c++,visual-c++,boost,visual-studio-2012,C++,Visual C++,Boost,Visual Studio 2012,我有以下简单的程序: #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,

我有以下简单的程序:

#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;
}

这只发生在VC11中的版本构建中。(VC10可以)。查看调用堆栈,它发生在boost\intrusive\rbtree\u algorithms.hpp中的\u insert()之后的\u再平衡。有人遇到过类似的问题吗?

如果有人会遇到这种情况,那么问题似乎是与特定版本的boost(在我的例子中是V1.55.0)相关的代码生成。它也仅在发布配置和应用优化(即“/O1”、““/O2”或“/Ox”)时发生。使用Boost v.1.58解决了此问题。

堆栈帧已损坏,编译器没有为Boost对象分配足够的空间。到目前为止,最常见的原因是您链接了错误的boost版本或错误的boost构建。就像你用VC10制作的一样。或者调试版本。仔细检查了版本,但是它得到了正确的boost版本。我也有同样的问题,我非常确定我使用的是正确的boost版本。它也仅在使用“/O2”优化标志时发生。
Unhandled exception at 0x00007FF6B7741664 in Server.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.