Bre*_*dan 12 c# generics pointers
下午所有,
如果你愿意,请帮助一下.为了规避.NET中的2Gb对象限制,我创建了一个在堆上分配内存的类,这允许我创建最大可达RAM空间的数组.但是,为了便于开发(因为它是一个概念证明),它很难编写.现在它工作了我一直在尝试改变代码使用泛型,所以我可以使用相同的代码多种类型.
在分配内存并正确索引数组时,我需要一个与数组相同类型的指针数组,即需要长数组long*[] myLargeArray
.问题是当我使用泛型这个声明变成时T*[] myLargeArray
,它总是产生错误'不能取地址,获取大小,或者声明一个指向托管类型的指针('T')'
提前致谢.
PS在任何人问之前,是的,我确实需要这么大的阵列.
2D数组的代码示例:
LargeArray <int> myArray = new LargeArray<int>(x, y);
public unsafe class LargeArray where T : struct
{
...
private T*[] tArr;
...
public LargeArray(long sizeI, long sizeJ)
{
...
myLargeArray = new T*[sizeI];
...
}
}
Run Code Online (Sandbox Code Playgroud)
来自MSDN
即使与 unsafe 关键字一起使用,也不允许获取托管对象的地址、获取托管对象的大小或声明指向托管类型的指针。有关详细信息,请参阅不安全代码和指针(C# 编程指南)。
我也不知道你是否是,但请确保你在代码中使用固定关键字。