10,000 X 10,000 혹은 그 이상의 행렬을 계산해야 합니다.
포인터로 아래와 같이 선언하거나 동적 배열로 SetLength 등을 사용하면
Memory 오류가 발생합니다.
아마도 Window에서 2GB 이상 Access가 안되기 때문인 듯 한데
아주 큰 사이즈의 행렬을 생성하고 계산하고 저장하는 방법이 없을까요?
var
Matrix : pointer;
Col, Row : longint;
begin
Col := 10,000;
Row := 10,000;
GetMem(Matrix, Col*Row*SizeOf(double)); => Error
end;
한 행렬이 800M(Col*Row*SizeOf(double))나 되서 여러개의 행렬을 쓰시면 out of memory에러가 발생할 수 있겠군요...
GetMem을 쓰지 마시고 메모리맵드파일을 한번 이용해보세요...
윈도우 가상메모리만 늘려준다면 2G의 한계를 극복할 수 있을듯하네요...
^^