C# 在C中处理通过指针引用的对象#

C# 在C中处理通过指针引用的对象#,c#,pointers,garbage-collection,C#,Pointers,Garbage Collection,我正在使用一个C#包装器来实现一个API,该API提供来自摄像机的图像数据 我有一个类,它包含接收到的每个帧的数据,我想实现一个dispose方法,在处理完帧数据后运行。问题是我希望处理的主要对象(图像缓冲区)只能通过指针访问 我不知道这在C#中是否有必要。我知道C++中我必须做一些事情来防止内存泄漏,但是我不太清楚指针如何在垃圾收集中工作。事实上,这个程序运行正常,但是内存的使用确实比我希望的要快得多。我发现,与依赖我假设的自动运行终结器相比,正确处理某些对象可以提供更一致的内存使用,例如在设

我正在使用一个C#包装器来实现一个API,该API提供来自摄像机的图像数据

我有一个类,它包含接收到的每个帧的数据,我想实现一个dispose方法,在处理完帧数据后运行。问题是我希望处理的主要对象(图像缓冲区)只能通过指针访问

我不知道这在C#中是否有必要。我知道C++中我必须做一些事情来防止内存泄漏,但是我不太清楚指针如何在垃圾收集中工作。事实上,这个程序运行正常,但是内存的使用确实比我希望的要快得多。我发现,与依赖我假设的自动运行终结器相比,正确处理某些对象可以提供更一致的内存使用,例如在设置新图像之前处理图像框上的现有图像。如果可能的话,我想在这里试试类似的东西

可能很重要:指针指向的数据由不安全代码处理,这会创建两个指向对象的新指针(一个为UInt16*,另一个为byte*)。这两个指针只存在于不安全例程的范围内,但我不确定这是否会以某种方式干扰GC

任何建议,建议,谢谢。谢谢


编辑:我通过回调从外部API接收帧数据。

内存分配的位置是否可能重复?在.NET或外部API中?如果外部API分配内存,请检查它是否也提供了释放内存的API。否则,您可能需要
PInvoke
C
free
功能。