사용자 라이브러리에서 malloc 호출을 관리하는 방법. "malloc이 호출 될 때 사용자 공간에서 메모리가 어떻게 할당되는지, 누가 그것을 관리하는지, sbrk()는 커널 공간에 들어가기 위해 호출 됨"에 대한 설명이 필요합니다.동적 메모리 할당
1
A
답변
4
함수의 malloc() 패키지가 공간을 관리합니다. sbrk()를 사용하여 시스템에서 상대적으로 큰 메모리 덩어리를 가져오고 사용 가능한 많은 알고리즘 중 하나를 사용하여 요청 된대로 더 작은 청크를 호출자에게 전달합니다. free() 함수는 해제 된 메모리를 '사용 가능 메모리'목록에 다시 저장합니다. 실제로 드물게 운영 체제 자체에 메모리가 다시 릴리스됩니다.
다른 버전의 malloc() 디자인에 대한 기사가 많이 있습니다. malloc()의 많은 디버깅 버전이 있는데, 특히 할당 된 메모리의 남용을 찾습니다. Knuth 'The Art of Computer Programming'에서 메모리 할당에 대해 읽을 수 있습니다. 그것은 나의 기억 봉사에서 볼륨 1에있다.
6
C 런타임 라이브러리는 힙을 관리합니다. 힙에는 사전 할당 된 프리 스토어가 있습니다. 런타임에서 연속 블록을 찾을 수 없으면 운영 체제에서 더 많은 메모리를 요청하려고 시도합니다 (sbrk()
).
"out of memory"가 실패한 경우 - malloc()
이 널 포인터를 반환합니다. 추가 메모리가 성공적으로 요청되고 수신 된 청크가 더 큰 경우 malloc()
호출자가 청크 블록을 요청한 부분이 분할됩니다. 한 부분은 점유 된 것으로 표시되고 호출자에게 반환되고 다른 부분은 무료 저장소에 추가됩니다.
sbrk()
이 성공적으로 반환 된 시점부터 메모리 청크는 호출 프로그램 주소 공간에 속합니다.
관련 문제
- 1. 동적 메모리 할당 교재?
- 2. 동적 GPU의 메모리 할당
- 3. C++ 동적 메모리 할당
- 4. 동적 메모리 할당 문제
- 5. 동적 메모리 할당
- 6. VB6에서의 동적 메모리 할당
- 7. 동적 메모리 할당
- 8. C에서의 동적 메모리 할당
- 9. __global__ 함수의 동적 메모리 할당
- 10. 2D 동적 메모리 할당 - ObjectiveC
- 11. 동적 모듈의 메모리 할당 관련 문제
- 12. 동적 메모리 할당 + 문자열 문제 잘림
- 13. realloc을 사용한 동적 메모리 재 할당
- 14. Java 메모리 할당 정렬
- 15. 메모리 할당
- 16. 메모리 할당
- 17. 메모리 할당
- 18. 동적 언어 및 변수 할당
- 19. 자동/정적 메모리 어쩌면 할당
- 20. 메모리 누출의 C/메모리 할당 ++
- 21. 메모리 동적 할당 문제 : main : malloc.c : 3096 : sYSMALLOc
- 22. 동적 배열을위한 메모리 할당 - 블록 헤더가 손상되었습니다. (FastMM4)
- 23. 동적 메모리 할당 후 배열을 초기화하는 방법은 무엇입니까?
- 24. 스레드 당 메모리 할당
- 25. 디스플레이 할당 메모리
- 26. std :: map의 메모리 할당
- 27. TimerCallback.PerformTimerCallback 메모리 할당
- 28. C에서의 메모리 할당
- 29. 어셈블리 런타임 메모리 할당
- 30. c 메모리 할당
당신은 무슨 뜻인지 설명 할 필요가 있습니다. –
... 검색을 사용하면 필요한 것을 찾을 수 있습니다! – dirkgently