2010-02-17 3 views
1

고객이 우리 애플리케이션의 일부 메모리 사용 요구 사항을 가지고 있습니다. 그들은 우리의 헌신적 인 기억이 합리적이지만 예약 된 기억이 높다는 것을 주목합니다. 그들은 메모리를 할당 할 때 CRT 힙이 커지기 때문에 이것이 의심 스럽지만 메모리가 할당 해제되면 CRT가 페이지를 OS로 돌려 보내지 않습니다. 우리는 malloc/free의 약간의 사용법과 함께 빌트인 연산자 new/delete/new []/delete []를 사용하고 있습니다.heapmin을 사용해야하는시기/이유는 무엇입니까?

사람들은 "메모리 관리자가 어느 시점에 _heapmin을 호출하여 힙을 압축합니까?"라고 묻습니다.

음, _heapmin을 명시 적으로 호출하지 않습니다. 우리가해야할까요? 그 사용법에 대한 엄지 손가락 규칙이 있습니까?

+3

글쎄, 그들이 OS에 free'd 원한다면, 나는 그것을 주기적으로 호출하는 것 같아. 문제가 무엇인지는 모르겠다. OS가 메모리를 필요로한다면, 어쨌든 그것을 취할 것입니다. 포기함으로써, * 기억이 필요하다면, 당신은 그것을 버린 이후로 당신 자신을 천천히 움직이고 있습니다. 그것은 패배입니다. – GManNickG

+0

예약 된 메모리가 실제로 중요합니까? 그것은 비어있는 것으로 운영 체제에 표시되었으므로 예약 된 메모리의 양이 중요하지 않아야합니다. –

+0

그건 내가 궁금해하는거야. –

답변

0

CRT 메모리 관리자를 사용할 때 명시 적으로 호출 할 필요가 없으므로 OS가이를 관리합니다.

+0

CRT는 Windows API 위에 구축되어 있으며, CRT가 명시 적으로 요청하지 않고도 OS는 아무 것도 할 수 없습니다. 밝혀진 바와 같이 CRT는 응용 프로그램에 의해 해제 된 페이지를 절판하지 않습니다. 시간이 지남에 따라 CRT는 제한된 주소 공간의 많은 부분을 소비 할 수 있습니다. 다른 작업 ([MapViewOfFile] (https://msdn.microsoft.com/ko)과 같은 메모리, 주소 공간 만 필요하지는 않습니다. -us/library/windows/desktop/aa366761.aspx)) 시작되지 않습니다. '_heapmin'은 이런 상황에 도움이 될 것입니다. 단, 최근 버전에서는 불행히도 아무것도하지 않습니다. – IInspectable