거대한 관리되지 않는 행렬 구조 (즉, std::vector<std::vector<T> >
)를 동일한 관리 구조 (cli::array<T,2>
)로 재 할당하기 위해 노력하고있는 코드를 얻으려고했습니다. 한 번에 두 구조를 모두 메모리에 보관할 수 없기 때문에 파일에 쓰고 구조를 다시 읽는 방법을 선택했습니다. 문제는 일단 원래의 행렬을 삭제하면 행렬에 대한 관리 메모리를 할당하려는 메모리가 실패합니다.행렬을 관리되지 않음에서 관리로 재 할당
I 이미지에는 다른 런타임의 힙과 관련이있을 수 있습니다. cpp vs clr. 그러나 구체적인 세부 사항을 찾을 수 없습니다. cpp 런타임이 힙 공간을 유지하고, clr 힙이 행렬을 다시 할당하지 못하게 할 수 있습니까? 그렇다면, clr 힙을위한 공간을 만들기 위해 cpp 런타임이 힙 공간을 정리하도록 강제 할 수 있습니까?
이제 명확하게하기 위해 대상 행렬은 가변 배열이 아닌 2 차원 배열이어야합니다. 이 크기를 조정할 수없는 문제가 있음을 알고 있습니다. 그렇지 않으면 작은 덩어리로 행렬을 이동할 수 있습니다.
미리 감사드립니다.
지그재그 배열을 사용할 수없는 것은 인위적인 제한입니다. 확실히 주소 공간 조각화 문제를 해결합니다. 64 비트 운영 체제가 간단한 해결 방법입니다. –