gpt4 book ai didi

C# pinvoke 释放 native c++ 内存

转载 作者:行者123 更新时间:2023-11-30 04:11:13 24 4
gpt4 key购买 nike

如果我有一个像这样返回 char* 的 C++ 函数:

char *cctalk_app_event_name(DG_CCTALK_APP_EVT_CODE);

以及对应的C#签名:

[System.Runtime.InteropServices.DllImportAttribute("cctalk.dll", EntryPoint = "cctalk_app_event_name", CallingConvention = CallingConvention.Cdecl)]
public static extern System.IntPtr cctalk_app_event_name(DG_CCTALK_APP_EVT_CODE param0);

如果 native 代码返回一个分配有 new 关键字的 char*,我肯定会在每次调用此函数 C# 时发生内存泄漏?有什么办法可以释放那段内存吗?

最佳答案

我从查看函数名称的直觉是,这很可能会返回一个指向 DLL 中的字符串常量的指针,在这种情况下,您无论如何都不需要担心释放指针。

如果 SDK 的手册 (link here) 没有任何用处,那么我会反汇编 DLL 并查看该函数的作用,但在建立之前不要担心如何删除它你需要的。

关于C# pinvoke 释放 native c++ 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20294036/

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