C++ ioStream的访问冲突错误

C++ ioStream的访问冲突错误,c++,visual-studio-2010,iostream,access-violation,C++,Visual Studio 2010,Iostream,Access Violation,我正在创建ioStream,然后在dll中使用重载运算符: std::istrstream wStream((char *)aString,strlen(aString)); wStream >> wValue; aString是作为参数接收的常量字符*。 第二行导致此运行时错误: 0xC0000005:访问冲突读取位置0x00000020 然而,当我用操作符重载函数的实际代码替换第二行时,我没有得到任何错误 请注意,我是在Visual Studio 2010中构建的,在使

我正在创建ioStream,然后在dll中使用重载运算符:

  std::istrstream wStream((char *)aString,strlen(aString));
  wStream >> wValue;
aString是作为参数接收的常量字符*。 第二行导致此运行时错误:

0xC0000005:访问冲突读取位置0x00000020

然而,当我用操作符重载函数的实际代码替换第二行时,我没有得到任何错误


请注意,我是在Visual Studio 2010中构建的,在使用Visual Studio 2005编译时,相同的代码运行时没有错误。

如果没有上下文,很难知道如何设置
aString
,但是
istrstream
是一个不推荐使用的类。您是否考虑过尝试
istringstream
作为一种测试来帮助缩小范围

std::istringstream wStream(std::string(aString));
wStream >> wValue;

编辑:进一步考虑后,这看起来可疑地像您的
aString
实际上是空的,并且当
stream
尝试从中读取时,它最终死于访问冲突。在执行字符串流操作之前,请尝试打印出aString的原始指针值(类似于
std::你能详细说明一下吗?这个例子中的aString是什么?wValue是什么?你几乎肯定在这里经历过未定义的行为,但如果没有更多信息,很难帮助你超越这一点。另外,正是因为c样式字符串和c样式转换的危险性,可能会掩盖其他可能存在的问题。)这也给您带来了麻烦。我确实尝试过使用istrstream而不是istrstream,但仍然得到了相同的错误。此外,aString是一个const char*,wValue是一个重载>>运算符的对象。aString的类型是什么,它是如何初始化的。