摘要:
在 unsafe 代码或与非托管代码交互时,使用 GCHandle.Alloc(obj, GCHandleType.Pinned) 可以固定托管对象在内存中的位置(防止 GC 移动它),并获取其地址(一个 IntPtr)。这在需要将托管对象的地址传递给非托管函数时非常关键。” 这里有一个非常核心的问 阅读全文
posted @ 2025-08-19 18:00
青云Zeo
阅读(12)
评论(0)
推荐(0)
摘要:
我们来深入探讨一下 C# 中的 IntPtr、托管(Managed)和非托管(Unmanaged)这几个核心概念,它们在处理内存、平台互操作和低级操作时至关重要。 1. 托管 (Managed) 代码与资源 是什么? 托管代码: 指由 .NET 公共语言运行时 (CLR) 管理和执行的代码(通常是 阅读全文
posted @ 2025-08-19 17:07
青云Zeo
阅读(41)
评论(0)
推荐(0)
摘要:
运行环境(托管 vs 非托管)、资源类型(托管资源 vs 非托管资源) 和 代码类型(托管代码 vs 非托管代码),它们都围绕着 .NET 框架的核心机制——公共语言运行时(CLR) 展开。 下面进行系统梳理: 核心概念:托管环境(Managed Environment) 定义: 由 CLR 管理和 阅读全文
posted @ 2025-08-19 16:41
青云Zeo
阅读(22)
评论(0)
推荐(0)
摘要:
** CLR 与托管/非托管的关系** CLR(Common Language Runtime) 是 .NET 的运行时环境: 托管代码运行在 CLR 上,由它提供: 内存管理(GC) 类型安全 异常处理 安全控制 非托管代码 不运行在 CLR 上,所以 CLR 不直接管理它,需要通过互操作(Int 阅读全文
posted @ 2025-08-19 15:03
青云Zeo
阅读(19)
评论(0)
推荐(0)