2017-02-22 7 views
0

저는 C에서 새롭기 때문에 할당자가 C로 할 수있는 일에 대해 혼란 스럽습니다.할당자가 필요에 따라 힙 요청을 충족시키기 위해 초기화되지 않은 데이터 세그먼트를 사용할 수 있습니까?

제목과 마찬가지로 할당자가 필요하면 힙 요청을 충족시키기 위해 초기화되지 않은 데이터 세그먼트를 사용할 수 있습니까?

+1

먼저 C의 할당자가 무엇인지 말해야합니다. – DeiDei

+0

메모리 할당 자 – YINGYING

+0

어쩌면 내가 힙 할당자를 말해야합니까? – YINGYING

답변

2

"메모리 할당 자"라는 용어는 C 언어를 정의하는 표준에서 의미가 없습니다. 그러나 이들은 C 런타임 라이브러리가 제공해야하는 "메모리 관리 함수"집합을 정의하므로 사용자가 요구하는 함수라고 가정합니다.

표준은 또한 위치를 정의하지 않거나 메모리 기능 malloc, calloc, reallocfree이 존재하고 지정된 의미를 가지고 있어야합니다 단지에서 할당 할 수 있고있는 방법에 대해 설명합니다. 따라서 어디에서 메모리를 할당할지 결정하는 것은 구현에 달려 있습니다.

"초기화되지 않은 데이터 세그먼트"라는 용어는 일반적으로 프로그램이 사용할 메모리의 양을 로더가 예약해야한다는 것을 지정하는 컴파일 된 실행 파일의 섹션을 의미합니다.

내가 알고있는 모든 구현 (또는 "초기화되지 않은 데이터 세그먼트"라는 용어가 의미하는 부분)에서이 섹션은 초기화되지 않은 정적 변수에 사용됩니다.

대부분의 구현에서 C 런타임은 메모리 블록을 얻기 위해 OS 커널을 호출하여 힙을 형성하여 프로그램에 할당합니다.

리눅스 here의 프로세스 메모리 레이아웃에 대한 설명이 나와 있습니다.