Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用std::collections时,xmemory0在释放时引发异常 我有一个C++程序,主要用于UI,它使用C++的DLL作为逻辑。_C++ - Fatal编程技术网

使用std::collections时,xmemory0在释放时引发异常 我有一个C++程序,主要用于UI,它使用C++的DLL作为逻辑。

使用std::collections时,xmemory0在释放时引发异常 我有一个C++程序,主要用于UI,它使用C++的DLL作为逻辑。,c++,C++,最近,我将编译器从平台工具集VS 2012(v110)切换到VS 2017(v141),从那时起,每当它试图发布std::集合时,我都会收到一个异常(没有描述) 例如: { std::string str = ""; } 我对std::map、std::stack和std::list也做了同样的尝试。所有这些都在函数_Deallocate中的文件xmemory0中获得了一个异常。当我创建一个简单的C++控制台应用程序时,这是不可能的,所以我猜它与C++应用程序中的C++有什么关系。 为

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

例如:

{
    std::string str = "";
}
我对std::map、std::stack和std::list也做了同样的尝试。所有这些都在函数_Deallocate中的文件xmemory0中获得了一个异常。当我创建一个简单的C++控制台应用程序时,这是不可能的,所以我猜它与C++应用程序中的C++有什么关系。
为std::list使用自定义分配器似乎可行,但我想知道为什么升级编译器会导致这样的问题。

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


(不要问我们为什么要覆盖这些运算符(不是我的决定)…。

这里没有足够的信息来帮助您。@Ben您还需要什么?我会尽我所能给你所有你需要的信息。有什么例外?你是否已经调试过调试堆?你的C和C++代码是如何交互的?任何一个字符串都是在两个C++版本的DLL之间交换的,它们是用MSVC的不同版本编译的。