문제

나는 알고 싶어하는 방법을 권장 윈도우에서는 C 프로그래밍:사용하는 malloc 어나 Win32HeapAlloc(어쩌면 VirtualAlloc?) 기능입니다.

내가 읽은 MSDN 메모리 관리 기능 문서 MSDN 기사에 대해 malloc 및 HeapAlloc 지만,그들은 말하지 않는 한 사용해야하고 어떤 상황에서.

도움이 되었습니까?

해결책

으로 스틱 malloc 지 않아도 되는 경우에는 사용하는 이유가 다릅니다.제공될 예정입니다 아래의 측면에서는 OS 메모리 할당은 기본형,그러나 진짜 이점에서 다이빙을 계층이 자신입니다.

몇 API 를 통화가 필요하다고 믿는 메모리 블록 할당 Windows 힙입니다,하지만 당신은 알려할 때 당신이 올 것입니다.

또는 당신이 원하는 경우가 더 많은 고급처럼 사용 공유 메모리를 제어하는 권한에 메모리가 직접 페이지 당신이 볼 필요가에서 윈도우 API 는 다음과 같이 호출 VirtualAlloc.

다른 팁

VirtualAlloc 고 친구를 줄 수 있는 비트의 가장자리가 할 경우의 힙 데이터 처리하거나 필요할 경우를 만드는 자신의 메모리 관리자가 어쨌든.

그렇지 않으면 그것이 쉽게 그리고 물론 휴대성이 사용하는 malloc().

VirtualAlloc 는 이 멋진 기능이라고 MEM_RESET 는 무효화의 데이터 블록의 메모리,하지만 그것을 유지 할당됩니다.이 경우 호출하여 디스크에,윈도우지 않을 것이 귀찮게 하지 그것은 다시 다음 시간에 당신에 액세스할 수 있습니다.그것은 좋은 많이 있을 경우에는 별 수 있는 데이터는 갑자기 불필요하게 되었지만,당신은 곧 당신이 뭔가를 채우기 위해 다른 버퍼니다.

그것은 또한 차별화 사이의 예약 주소 공간과 실제로 요청하는 메모리.거기에 몇 가지 좋은 물건이 있는 경우에 당신은 좋은 이유로 이동하는 문제입니다.

한가지 더:malloc()을 보장하는 수 휴대용(적어도 어떤 ANSI-C 컴파일러)그리고 더 많은 우아한입니다.

어떤 상황에서 사용하는 등의 기능을 HeapAlloc,HeapFree 신의 인생을 더 쉽게 만들 것입니다.하나의 예:큰야 하는 응용 프로그램에서 메모리를 할당하 하나의 모듈(말 library1.dll 다)및 무료로 메모리에서 주요 모듈(말 program.exe).이 할 수 있는 안전하게 사용하는 경우 HeapAlloc,HeapResize 및 HeapFree 기능,하지만 할 수 없을 사용하여 C 런타임 라이브러리(예를 들어,자유,크기를 조정하).

그러나:지 않는 경우에 좋은 이유로,당신은 지켜야 한다 malloc//의 크기를 조정 기능이 있다.또한,을 변경해야 하는 경우에는 권한의 할당되는 메모리(예를 들어:를 실행하는 경우 등),사용해야 합니다 기능과 같은 VirtualAlloc,VirtualFree.

을 만들 수 있는 래퍼로 떠나는 옵션을 구현을 변경할 상세정보.수도 모두 비교 옵션 코드고 다음을 결정합니다.

달리 강탈,나는 다른 방법으로...이후 나는 선택한 코드에 대한 WinAPI,내가 사용하는 기본 기능을 대신 C-실행 시간 그들은 얇은 래퍼 어쨌든 그들을.

와 HeapAlloc 할 수 있는 별도의 힙 서로 다른 작업에 대한/하위 시스템.이것을 단순화할 수 있습니다 덤프를 분석하의 큰 응용 프로그램.

와 malloc 만 사용할 수 있습 중 하나는 힙,하지만 당신은 일부를 할당 최적화하는 CRT 저자가 구현한 최고의 OS HeapAlloc.

내려가 VirtualAlloc 지 않을 구입 당신은 많지 않는 한,당신을 구현하고자하는 사용자 정의 힙 관리자는(당신의 자신의 세트의 힙*능).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top