C#新手,对内存管理之道不多,只知道C#是自动托管的,不知道在不安全代码中能不能手动分配内存。主要是想实现下面的效果:事先划好几个内存块,比如将200K 划分成 5 块,分别为 20,30, 40,50,60, 在界面上用 5 个Panel, 标明每块的大小。 分配的时候,必须输入 作业名 和申请分配的空间大小,如果 找到还没有分配的内存块,并且 内存块的大小 大于申请的空间大小,这将这块内存块分配给这个作业。 即: 在这个内存块上面标上作业名,表示已经分配。回收的时候,需要用户输入作业名,根据作业名和已经分配的内存块匹配,如果名称相同,则回收内存,将内存块上面的作业名去掉。
同时 这些内存块面板没有分配的时候,用蓝色显示; 已经分配的用红色显示
同时 这些内存块面板没有分配的时候,用蓝色显示; 已经分配的用红色显示
解决方案 »
- datagridview 绑定问题
- splitContainer控件的中间那个分割线(竖线)位置能通过代码控制么?
- Treeview节点求值
- DataGridView用LinqToSQL作数据源时的增删改
- 【高分】怎么在另一个cs文件里得到这个 string SoftPath 的值啊???
- 这句话怎么理解?
- 如何实现点击选中LISTVIEW变色
- 关于xml与string的操作问题
- winform的分页
- waveOutGetVolume()API函数调用问题
- C# 有没有一个方法返回上次选中的行,比如现在选中第55行,又选中102行,要怎样返回到第一次选中的55行,是否有快捷键?
- QQ歌词卡拉ok的效果是如何实现的?
知道怎样分配系统内存,还真不知道如果给作业用。 int cb = 200 * 1024;
IntPtr ptr = System.Runtime.InteropServices.Marshal.AllocHGlobal(cb);
//...
System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr);
直接用c++做好了,用c#调好了
{
int* ptrInt = stackalloc int[4]; //分配可以保存4个int的内存空间.
}
// cs_keyword_stackalloc.cs
// compile with: /unsafe
using System; class Test
{
public static unsafe void Main()
{
int* fib = stackalloc int[100];
int* p = fib;
*p++ = *p++ = 1;
for (int i=2; i<100; ++i, ++p)
*p = p[-1] + p[-2];
for (int i=0; i<10; ++i)
Console.WriteLine (fib[i]);
}
}
[/code]
// compile with: /unsafe
using System; class Test
{
public static unsafe void Main()
{
int* fib = stackalloc int[100];
int* p = fib;
*p++ = *p++ = 1;
for (int i=2; i<100; ++i, ++p)
*p = p[-1] + p[-2];
for (int i=0; i<10; ++i)
Console.WriteLine (fib[i]);
}
}
http://msdn.microsoft.com/en-us/library/cx9s2sy4(VS.71).aspx#Mtps_DropDownFilterText