当前位置: 首页 > article >正文

30.Marshal.AllocHGlobal C#例子

Marshal.AllocHGlobal

这个代码为IntPtr分配非托管内存。当访问非托管代码时有时候会需要一个指向非托管内存的指针。因此需要对IntPtr分配非托管内存。分配的大小可以是8个字节。不够可以写更大。

用完要用Free释放内存,否则这个非托管内存不会被C#自动释放。

using System;
using System.Runtime.InteropServices;
class Program
{
    static void Main(string[] args)
    {
        IntPtr intptrs;
        intptrs=Marshal.AllocHGlobal(8);
        Marshal.FreeHGlobal(intptrs);
    }
}

“Alloc”是“allocate”的缩写,意为“分配”。在编程和计算机科学中,分配通常指的是为变量、对象或数据结构在内存中预留空间。

“H”可能代表“Heap”,即堆内存。在操作系统和内存管理中,堆是一种用于动态分配内存的区域。然而,在这个上下文中,“H”更可能是为了与“Global”形成一个有意义的缩写或标识,而不是直接代表“Heap”。

“Global”指的是全局的,或非托管的内存区域。在.NET环境中,内存被分为托管内存和非托管内存。托管内存由.NET运行时自动管理,而非托管内存则需要程序员手动管理。


http://www.kler.cn/a/463051.html

相关文章:

  • Linux硬盘分区 --- 挂载分区mount、卸载分区umount、永久挂载
  • 学技术学英文:Tomcat的线程模型调优
  • 低代码引擎插件开发:开启开发的便捷与创新之路
  • JVM实战—9.线上FGC的几种案例
  • Tailwind CSS 实战:表单设计与验证实现
  • 15. 接雨水
  • 递归算法.
  • AI对接之JSON Output
  • 使用连字符容易出错,尽量使用驼峰式的
  • java 上传txt json等类型文件解析后返回给前端
  • OpenCV-Python实战(9)——滤波降噪
  • C++“STL之String”
  • 说说缓存使用的具体场景都有哪些?缓存和数据库一致性问题该如何解决?缓存使用常见问题有哪些?
  • 融合表面信息和等变扩散的分子对接模型 SurfDock - 评测
  • Git的使用流程(详细教程)
  • NFT Insider #162:Cool Cats和Doodles或将推出代币
  • 线性表的三种常见查找算法(顺序查找、折半查找、分块查找)及算法分析
  • 无人机巡检在光伏电站中的应用优势
  • HarmonyOS NEXT版本Stage应用开发模型介绍(附视频讲解)
  • SWM221系列芯片之电机应用及控制
  • git的全通路线介绍
  • Mono里运行C#脚本19—get_runtime_by_version
  • stipple函数的坑......matlab绘制显著点
  • 【手搓一个脚本语言】六、用C语言抽象语法树AST计算表达式的值
  • 机加工行业制造执行MES系统-打造智能MES系统解决方案
  • 使用 Navicat 官方免费版来实现从 DAT 文件填充 MySQL 8 表