c++中的Alloc数组,c#中的free数组
Alloc array in C++ and free in C#
我编写了一个使用Dllimport的程序。这对我来说很有趣,如果我需要分配一些内存并将指针返回到c#作为IntPtr,如何释放它?
将IntPtr
传递回您的dll,以便它可以为自己释放内存。
首先,不要那样做!你正在破坏托管语言的最大好处之一——你必须自己管理资源。
尽管如此,如果你真的需要这样做,你可以。
首先,本机dll必须提供自己的内存释放函数。然后,使用它!
代码可能是这样的:
static class Program
{
[DllImport("foo.dll")]
private static IntPtr myfooalloc();
[DllImport("foo.dll")]
private static void myfoofree(IntPtr p);
static void Main(String[] args)
{
IntPtr p = myfooalloc();
// Do something
myfoofree(p);
}
}
或者,更安全的:
IntPtr p = myfooalloc();
try
{
// Do something
}
finally
{
myfoofree(p);
}
一般来说,库的设计不需要做这些事情(一端分配,另一端释放)。当然,也有例外,通常情况下,您需要使用操作系统API函数来分配内存。因此,这取决于标准库,因此没有通常的正确答案。
相关文章:
- 使用指针从C++中的数组中获取最大值
- 在C和C++中初始化结构中的数组
- 将C++中的数组转换为字符串
- 比较if语句中的数组值和int值
- 堆栈和队列是否像C++中的数组一样传递?
- 从文件读取,并写入函数C++中的数组
- 在 C++ 中的数组上使用阶乘函数
- Visual Studio 中的数组
- 在 C++ Consol 中的数组中执行用户命令时出现问题
- 如何在不使用 C++ 中的数组或函数的情况下查找 N 位数字的所有排列
- 从斐波那契序列 c++ 中的数组中查找正确的元素时出错
- 调试代码块中的数组
- c ++数据输入并读回列表中的结构结构中的数组
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 将数据追加到C++中的数组
- 我无法将数据从数据网格列传输到 C# 中的数组以获取文本框建议收集数据
- Getter 和 Setter 用于类 C++ 中的数组元素
- C++中的数组存在问题
- 如何更新传递到函数中的数组
- 如何使用 c++ 将股票代码的结果添加到 poloniex 中的数组中?