2014-11-04 3 views
-1

malloc()을 사용하여 메모리를 할당하는 방법은 무엇입니까? 누가 메모리 OS 또는 컴파일러를 할당합니까? free()를 사용하여 메모리를 해제하면 다른 프로세스에서 메모리를 사용할 수 있습니까?malloc()을 사용한 동적 메모리 할당

+1

한 번에 한 가지 질문을하고 검색 기능을 사용하십시오. 여기에 앞서 질문하고 대답 한 내용이 모두 포함되어 있습니다. –

+0

질문하기 전에 질문이있는 것 같지 않습니다. – user3344003

답변

2

OS에는 4 개의 메모리 영역 인 힙, 스택, 텍스트 및 데이터가 있습니다. malloc을 사용하면 OS는 힙 영역의 메모리를 제공합니다. 컴파일러는이 메모리를 할당하지 않습니다. free를 사용하면 메모리 블록이 힙으로 되돌려집니다.

0

일반적으로 힙 메모리는 운영 체제에서 제공하는 런타임 하위 할당자가 직접 제공합니다. 서브 할당자는 프로세스에 따라 다르며 커널 호출을 필요로하지 않습니다. 힙이 더 필요하다면 운영 체제에서 다른 덩어리를 가져 오기 위해 시스템 콜에 의존해야합니다.

하위 할당자가 OS에 청크를 다시 릴리스하는지 여부는 구현에 따라 다릅니다.