Marshal.FreeHGlobal 方法 (IntPtr)
释放以前从进程的非托管内存中分配的内存。
命名空间: System.Runtime.InteropServices
程序集: mscorlib(位于 mscorlib.dll)
下面的示例演示如何将托管的内容转换 String 类写入非托管内存,并因而释放非托管内存完成。
using System;
using System.Runtime.InteropServices; class MainFunction
{
static void Main()
{
Console.WriteLine("\nStringToGlobalAnsi\n"); // Create a managed string.
String managedString = "I am a managed String";
Console.WriteLine("1) managedString = " + managedString ); // Marshal the managed string to unmanaged memory.
IntPtr stringPointer = (IntPtr)Marshal.StringToHGlobalAnsi(managedString);
Console.WriteLine("2) stringPointer = {0}", stringPointer ); // Get the string back from unmanaged memory
String RetrievedString = Marshal.PtrToStringAnsi( stringPointer);
Console.WriteLine("3) Retrieved from unmanaged memory = " + RetrievedString ); // Always free the unmanaged string.
Marshal.FreeHGlobal(stringPointer); // IntPtr handle value is still the same:
Console.WriteLine("4) stringPointer = " + stringPointer ); // However, it contains no data after being freed:
String RetrievedString2 = Marshal.PtrToStringAnsi( stringPointer);
Console.WriteLine("5) RetrievedString2 = " + RetrievedString2 );
}
}
https://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.marshal.freehglobal(v=vs.110).aspx
Marshal.FreeHGlobal 方法 (IntPtr)的更多相关文章
- C#——Marshal.StructureToPtr方法简介
目录 MarshalStructureToPtr方法简介 功能及位置 语法 参数说明 异常 备注 举例 本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三 ...
- c#中Marshal.Copy()方法的使用
c#中Marshal.Copy方法的使用 Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制 函数有很多重载,如下所示: Copy(array< ...
- 【转】Graphics.DrawImage 方法 IntPtr 结构 GDI 句柄 知识收集
Graphics.DrawImage 方法 在指定的位置使用原始物理大小绘制指定的 Image. 命名空间:System.Drawing 程序集:System.Drawing(在 system.dra ...
- C#中的Marshal
Const.MaxLengthOfBufferd的长度固定为0x2000 也就是8192 private bool SendMessage(int messageType, string ip, ...
- 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)
using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...
- OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net)
http://www.cnblogs.com/xrwang/archive/2010/01/26/TheInteractionOfOpenCv-EmguCvANDDotNet.html 前言 在.ne ...
- VB.NET 内存指针和非托管内存的应用
介绍 Visual Basic 从来不像在C或C++里一样灵活的操纵指针和原始内存.然而利用.NET框架中的structures 和 classes,可以做许多类似的事情.它们包括 IntPtr, ...
- 在VS2010上使用C#调用非托管C++生成的DLL文件
背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用.本篇文章将引导你快速理解这个调用 ...
- 在C++中使用C#编写的类2
在那篇<在C#中使用C++编写的类>中我介绍了如何在C#中使用C++编写的类.可是由于C#在用户界面设计.数据库存储和XML文件读取等方面的优势,有时候也会出现要在C++中使用C#编写的类 ...
随机推荐
- [Tomcat无法启动]'Starting Tomcat v8.0 Server at localhost' has encountered a problem.
运行一个index.jsp,运行提示如下错误:点击服务器 解决办法1: 点击Tomcat服务器,将服务器里的web工程删除掉,再重新运行index.jsp. 解决办法2: 关闭Tomcat,最简单的方 ...
- azure 最佳实践 -- 保持冗余
保持冗余确保你的应用的部署体系是有冗余的,以避免单一节点失败的情况.一个弹性良好的系统可以灵活的绕过系统故障.找出应用中(请求执行)的关键路径.路径中的每个节点是否都有冗余?子系统失败时,系统能否有效 ...
- MyBatis的一对一
1. 建立好工程后,在pom.xml中配置myBatis的依赖. <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...
- asp.net 操作word 权限
1.先安装office 2.在“DCOM配置”中,为IIS账号配置操作Word(其他Office对象也一样)的权限: 开始>运行>输入 dcomcnfg >确定 具体操作:“组件 ...
- POI2015题解
POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI20 ...
- ambassador 学习二 认证
ambassador 可以在请求路由之前进行认证处理,一般的我们可能会使用第三方的认证服务 基本的环境安装可以参考相关文档 安装&&运行qotm 服务 可以参考官方文档,或者https ...
- iOS 基础类解析 - NSDate
版权声明:本文为博主原创文章,未经博主同意不得转载.转载联系 QQ 30952589,加好友请注明来意. https://blog.csdn.net/sleks/article/details/248 ...
- hibernate流程图
流程图: 作者: IT程序狮 链接:http://www.imooc.com/article/1296来源:慕课网
- CentOS7修复python拯救yum - 转载
原文:http://blog.51cto.com/welcomeweb/2132654 本人正在吹着空调,喝着茶水,然后qq头像抖了两下,业务开发同学给我打了个招呼,“忙么?帮个忙可以不?” 这很明显 ...
- 洛谷3343(ZJOI2015)地震后的幻想乡
题目:https://www.luogu.org/problemnew/show/P3343 1.那个时间与边的大小排名有关,所以需要求一下最大边的期望排名就行. 2.期望排名是这样算的:(排名为1的 ...