C# 内存的分配管理
using System.ComponentModel;
using System.Runtime.InteropServices;
//内存的分配
?int n = 100000;//长度
IntPtr buffer = Marshal.AllocHGlobal(sizeof(int) * n);
try
{
? ? var t = buffer + (n * 10) * sizeof(int);
? ? var p = Marshal.PtrToStructure<int>(t);
? ? //内存的分配2
? ? //拆箱:拆箱就是将一个引用型对象转换成任意值型!比如:
? ? int i = 0;
? ? System.Object obj = i;
? ? int j = (int)obj;
? ? //装箱:装箱就是隐式的将一个值型转换为引用型对象。比如:
? ? //int i = 0;
? ? //Syste.Object obj = i;
? ? //内存的回收
? ? //GC.Collect();
}
catch (Exception e)
{
? ? Console.WriteLine(e);
}
//内存的释放
Marshal.FreeHGlobal(buffer);
Console.WriteLine("Hello, World!");
Console.Read();
//WPF 内存的保护
public class MyViewModel
{
? ? public string _someText = "memory leak";
? ? public string SomeText
? ? {
? ? ? ? get { return _someText; }
? ? ? ? set
? ? ? ? {
? ? ? ? ? ? _someText = value;
? ? ? ? }
? ? }
}
//using 也可以避免内存泄露保护 Dispose方法 ?内存的保护
//using (MemoryStream stream = new MemoryStream())
//{
// ? ?// ...?
//}
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!