0

当我到达 strcpy 行时,我得到

An unhandled exception of type 'System.AccessViolationException' occurred. 
Additional information: Attempted to read or write protected memory. 
This is often an indication that other memory is corrupt.


char* str; char* out;
str = (char*) Marshal::StringToHGlobalAnsi(Parms["AVI"]).ToPointer();  
strcpy(out, str);  
Marshal::FreeHGlobal(IntPtr(str));
4

3 回答 3

2

您需要分配内存并指向out该内存。就像现在一样,out指向一些随机内存位置。

于 2012-07-24T17:52:35.760 回答
0

设置 str 之后,但在将其复制到 out 之前:

char* out = (char*)malloc((strlen(str) + 1) * sizeof(char));

if (out != NULL) {
    strcpy(out, str);
}

因为您需要某种缓冲区来复制。完成后一定要释放(out)。

于 2012-07-24T18:00:17.740 回答
0

如何在 Visual C++ 中从 System::String* 转换为 Char*

“方法3”看起来很简单。无需手动释放内存。

于 2012-07-24T18:14:22.873 回答