如何解决AccessViolationException

时间:2011-10-21 09:00:44

标签: access-violation

您能帮忙解决下面提到的问题:

以下是代码段:

托管代码(VC ++) - 包装代码:

方法-1:

void displayString(std::string abc)
{
  std::string xyz=abc;
  std::cout<<xyz;
}

方法-2:

void sendData(System::String^ input)
{
  char* inputData = (char*)Marshal::StringToHGlobalAnsi(input).ToPointer();
  std::string argData = inputData;
  displayString(argData); //Working fine

 //passing string instance to unmanaged code 
 /* while execution the below line the system throws: _CrtIsValidHeapPointer(pUserData), _BLOCK_TYPE_IS_VALID(pHead->nBlockUse), HEAP CORRUPTION DETECTED, and finally AccessViolationException */

   sendDisplayString(argData); //AccessViolationException 
   sendDisplayString("Hello"); //AccessViolationException

}

非托管代码C ++ dll:

void sendDisplayString(std::string input)
{
  std::cout<<input;
}

注意:已在所有提供的链接中搜索,但此问题没有解决方案。所有链接都路由到MSDN编组页面。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我想它会回答你的问题:http://support.microsoft.com/kb/172396