1

该库正在使用 std::string。当某些特定的应用程序与它链接时,在库中执行的字符串操作变得完全崩溃。

例如字符串赋值运算符'='(附加堆栈跟踪)。

在此处输入图像描述

memcpy_s( ... ) 的目的地和大小看起来很混乱。

我们无法在本地复制它。请指教。

编辑:代码看起来像这样:

...
#define DEFAULT_VAL "value"
...
class MyClass {
public:
 MyClass(const std::string& s=DEFAULT_VAL)
 {
  _test() = s;
 }
protected:
 inline const std::string& test() const {return m_test;}
 inline std::string& _test() {return m_test;}
private:
 std::string m_test;
};

....
MyClass c;
4

2 回答 2

4

您可能正在用 0 初始化一个std::string(or std::wstring),很可能是通过一个空指针,比如……

#include <string>
using namespace std;

int main()
{
    string s1( 0 );
    string s2 = s1;
}

不要那样做。

没有很多其他方法可以让std::string“崩溃”,所以很可能就是这样。现在去调试吧!祝你好运!

于 2012-11-14T10:19:51.580 回答
2

如果您遇到 DLL 在接口上暴露的情况std::string,请确保 .EXE 和 .DLL 都是使用相同的编译器版本和相同风格的 CRT 构建的(例如,都调试,都发布,都使用等的相同设置_HAS_ITERATOR_DEBUGGING)。

于 2012-11-14T10:25:13.443 回答