Chiều tất cả,C#: Sử dụng chung để tạo mảng con trỏ
một chút trợ giúp nếu bạn muốn. Để phá vỡ giới hạn đối tượng 2Gb trong .NET Tôi đã tạo một lớp phân bổ bộ nhớ trên heap và điều này cho phép tôi tạo các mảng tới giới hạn RAM miễn phí của tôi. Tuy nhiên, để dễ phát triển (vì nó là một bằng chứng về khái niệm) nó đã được mã hóa cứng trong thời gian dài. Bây giờ nó hoạt động tôi đã cố gắng để thay đổi mã để sử dụng Generics vì vậy tôi có thể sử dụng cùng một mã cho nhiều loại.
Trong việc cấp phát bộ nhớ và chỉ mục chính xác mảng, tôi cần một mảng con trỏ cùng loại mà mảng sẽ giữ, nghĩa là mảng dài cần long*[] myLargeArray
. Vấn đề là khi tôi sử dụng Generics tuyên bố này trở thành T*[] myLargeArray
, mà luôn luôn tạo ra các lỗi 'Không thể lấy địa chỉ của, có kích thước, hoặc khai báo một con trỏ tới một kiểu quản lý (' T ')'
Cảm ơn trước.
PS Trước khi có ai hỏi, vâng tôi thực sự cần những mảng lớn như vậy.
Mã ví dụ cho một mảng 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];
...
}
}
Tôi nghĩ rằng mô hình nhà máy chắc chắn là con đường để đi đến đây. –