当使用std :: collections时,xmemory0在deallocate处抛出异常

时间:2018-04-13 10:12:32

标签: c++

我有一个主要用于UI的C#程序,它使用c ++ dll作为逻辑。

最近我将编译器从平台工具集VS 2012(v110)切换到VS 2017(v141),从那时起我每次尝试发布std :: collection时都会收到异常(没有描述)。

示例:

{
    std::string str = "";
}

我尝试使用std :: map,std :: stack和std :: list,所有这些都在函数_Deallocate中的文件xmemory0中获得异常。当我创建一个简单的c ++控制台应用程序时,这不会发生,所以我猜它在c#应用程序中使用c ++有一些东西。

使用自定义Allocater for std :: list似乎可以工作,但我想知道升级编译器导致这样一个问题的原因。

1 个答案:

答案 0 :(得分:0)

最终我找到了原因,在2012年到2017年之间,他们添加了一个新的删除操作符。因此,为了分配字符串,它使用了我们的新运算符,并且为了解除分配它使用标准删除运算符。

(不要问我们为什么要覆盖那些操作员(不是我的决定)......)