如何使用我没有分配的内存

时间:2014-02-12 22:27:24

标签: c# memory memory-management

C#中是否可以使用我没有分配的内存?或者是否可以更改已创建数组的大小(但未分配内存)?

这是我的解决方案。这是更好的方式吗?

using System.Runtime.InteropServices;

class LengthOfArray
{
    public int Length;
}

[StructLayout(LayoutKind.Explicit)]
class MyArray
{
    [FieldOffset(0)]
    public LengthOfArray LengthOfArray;

    [FieldOffset(0)]
    public byte[] Array = new byte[4];
}

internal class Program
{
    private static void Main(string[] args)
    {
        var arr = new MyArray();
        arr.LengthOfArray.Length = 1024;
    }
}

如何最好地用字符串做类似的效果?

1 个答案:

答案 0 :(得分:1)

这不符合你的想法:

[FieldOffset(0)]
public byte[] Array = new byte[4];

这将指向偏移零的数组的指针。它没有放置4个元素。

I cannot tell you what you should do because I don't know what you want to accomplish.如果您需要一个可变大小的结构,请使用您想要的任何方法(Marshal.AllocHGlobal或固定byte[])分配一大块字节。