0

我有两种软件开发人员,一种专注于native C,另一种专注于.Netor mono,我们通过嵌入式开发一些集成软件mono。我们通过在线学习来做到这一点,一开始似乎还可以。但渐渐地,我们越来越频繁地遇到有关内存损坏的错误。虽然培训他们熟悉对方和大量互操作的东西是很昂贵的,这样他们就不会为内存损坏集成软件做出贡献,但作为一名经理,我认为拥有标准C代码可能更便宜:

  • GC第 1 步在调用单声道之前停止线程,
  • 第 2 步调用result = mono_runtime_invoke(..), 和
  • 步骤 3GC在所有关于结果的处理由C代码完成后启动线程。

内存损坏通常是该人在释放/移动数据C时使用指向托管空间的指针做某事。GC

如何实现这一点以及任何评论?

4

1 回答 1

2

The recommended practice is to create GCHandles to the managed object so that the GC knows about them instead of stopping the GC.

This is accomplished using the following functions:

mono_gchandle_new
mono_gchandle_new_weakref
mono_gchandle_get_target
mono_gchandle_free
于 2012-11-14T11:24:57.697 回答