gpt4 book ai didi

c# - C++/CLI 中的垃圾收集,C# 混合代码

转载 作者:行者123 更新时间:2023-11-30 15:20:58 38 4
gpt4 key购买 nike

我通过引用将数组从 C# 传递到 C++/CLI 以用作输出参数。我的代码如下:

C#

ushort[] a = new ushort[1];
cppclr.method(ref a);

C++/命令行

void method(array<ushort>^% a)
{
a = gcnew array<ushort>(5);
a[0] = 1;
a[1] = 2;
a[2] = 3;
}

代码编译良好,没有产生错误。但是,我很困惑我在 C# 中创建的数组是否已被垃圾回收处理?我的困惑是,因为我在 C++/CLI 中分配了一个新内存,所以以前的引用丢失了,应该由垃圾回收处理。该程序没有显示任何内存泄漏。我是否需要以任何其他方式处理这种情况?

最佳答案

一切尽在掌握。无论您运行的是 C# 或 C++/CLI 还是任何其他 .NET 语言,它都是在后台执行的相同的运行时。因此,您将获得相同的 GC。

当您使用 gcnew 时,您使用了运行时的托管内存分配器。如果您在 C++/CLI 中将 new 与非托管数组一起使用,则必须随后使用 delete[] 运算符将其释放。

关于c# - C++/CLI 中的垃圾收集,C# 混合代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802535/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com