我正在尝试使用此方法:
array<int^,2>^ Function1()
{
return gcnew array<int^,2>{ { 1 }, { 2 }};
}
输入:
auto x = Function1();
但是我收到一个错误: Project1.exe中的0x73572A55(clr.dll)抛出异常:0xC0000005:访问冲突写入位置0x00000834。
如果我想保留返回类型,如何解决这个问题? 谢谢!
答案 0 :(得分:2)
int
不是引用类型,不应与^
一起使用。
如果您从^
删除int^
,则此代码会运行:
array<int, 2>^ Function1()
{
return gcnew array<int, 2>{ { 1 }, { 2 } };
}
答案 1 :(得分:2)
如果我想保留返回类型,如何解决这个问题?
此返回类型不正确。没有办法在C#中表示int^
,也可能在其他.Net语言中也没有。拥有类型int^
的变量是每次访问整数时的性能命中,我相信它对垃圾收集器来说也更有用。
正确的解决方法是将int^
更改为int
无处不在。
现在,那说,我无法重现你得到的错误。也许你的错误在其他地方。
array<int^,2>^ Function1()
{
return gcnew array<int^,2>{ { 1 }, { 2 }};
}
int main(array<System::String^>^ args)
{
auto x = Function1();
Debug::WriteLine(x[0,0]);
return 0;
}
结果:
1