无法返回数组<int ^,2 =“”> ^ c ++ / cli

时间:2018-02-07 13:14:00

标签: c++-cli

我正在尝试使用此方法:

array<int^,2>^ Function1()
{
return gcnew array<int^,2>{ { 1 }, { 2 }};
}

输入:

auto x = Function1();

但是我收到一个错误: Project1.exe中的0x73572A55(clr.dll)抛出异常:0xC0000005:访问冲突写入位置0x00000834。

如果我想保留返回类型,如何解决这个问题? 谢谢!

2 个答案:

答案 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