该库正在使用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;
答案 0 :(得分:4)
您可能正在使用0初始化std::string
(或std::wstring
),最有可能通过nullpointer,例如......
#include <string>
using namespace std;
int main()
{
string s1( 0 );
string s2 = s1;
}
不要那样做。
没有太多其他方法可以使std::string
“崩溃”,所以很有可能就是这样。现在去调试!祝你好运!
答案 1 :(得分:2)
如果您遇到在接口上暴露std::string
的DLL,请确保.EXE和.DLL都是使用相同的编译器版本和< em> CRT的相同风格(例如,调试,两者都发布,两者都具有相同的_HAS_ITERATOR_DEBUGGING
设置等)。