gpt4 book ai didi

c# - 二维数组跨语言 C++ 和 C#

转载 作者:行者123 更新时间:2023-11-28 03:54:26 25 4
gpt4 key购买 nike

如果我想调用一个返回二维数组的外部 C++ 函数,我会遇到什么样的问题?例如,如果我在 C++ 函数内声明二维数组并在 C++ 函数内初始化数组的大小,.Net 自动垃圾收集器将如何处理?我是否必须为其提供执行垃圾收集的函数?如果是,我如何从 C# 程序中调用它?

最佳答案

除非函数返回一个或多个 vector ,否则它在 C++ 中也是完全相同的问题。这是一个内存管理问题,函数的调用者没有很好的方法来释放数组的内存,它不知道数组的大小,也不知道使用了什么分配器。就此而言,即使迭代数组也是危险的。无法在 C++ 中修复的问题也无法在托管互操作中修复。

你用同样的方法解决它,你让调用者提供数组,由被调用者填充。

请注意,托管数组没有这个问题,它们就像 vector<> 一样是类。从函数返回托管数组不是问题。 C++/CLI 可以做到,困难的互操作问题的标准解决方案。 SAFEARRAY 也是一种解决方案,在托管声明中使用 [MarshalAs] 将它们告诉 P/Invoke 编码器。

关于c# - 二维数组跨语言 C++ 和 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175903/

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