동적으로 메모리를 할당하면 메모리가 연속 메모리 세그먼트를 차지합니다.동적 메모리 할당
답변
반드시 그렇지는 않음. 다른 할당 메커니즘이있을 수 있습니다.
많은 사람들이 할당 된 청크 사이에 메타 데이터를 저장하고 객체 크기에 따라 분할 힙을 저장합니다. 반환 된 포인터의 연속성에 의존 할 수 없습니다.
예, 할당은 사실상 연속적입니다 (하나의 malloc() 호출로 얻은 경우). 물리적으로 연속적이지 않을 수도 있지만, 애플리케이션 관점에서 보았을 때 일반적으로 신경 쓰지는 않습니다.
정확하게 무엇을 요구하는지에 따라 다릅니다. 예를 들어,이 C 코드가 있다고 가정 해 보겠습니다.
char* a = malloc(100);
char* b = malloc(100);
a 및 b 포인터에 각각 100 바이트가 할당되어 있다고 가정 해 보겠습니다. 그러나 b에 할당 된 100 바이트가 a에 할당 된 100 바이트 바로 뒤에 있거나 또는 그 반대의 위치에 있다고 가정 할 수 없습니다. 그래서 그런 의미에서, 그들은 연속적이지 않습니다.
그러나 100 바이트의 각 블록 내에서 100 바이트는 프로그램의 관점에서 연속적입니다. 즉, a[1]
은 a[0]
및 a[2]
에서 1 바이트 떨어져 있습니다.
가상 메모리의 개념을 실제 메모리 중 하나와 구분해야합니다.
할당 된 모든 청크 (하나의 객체 또는 객체 배열)는 연속적인 가상 공간 (동적 메모리 할당자가 사용자에게 제공 한 주소에서 시작)을 가지지 만 실제 메모리에서 어떻게 분할되는지 기본 운영 체제는 메모리를 관리합니다.
물론 가상 메모리가 존재하지 않는다면 그것들은 일치 할 것입니다, 그렇지 않으면 그것을 사용하고있는 프로그램은 연속되지만 메모리의 물리적 레이아웃은 아닙니다.
- 1. 동적 메모리 할당 교재?
- 2. 동적 메모리 할당
- 3. 동적 GPU의 메모리 할당
- 4. C++ 동적 메모리 할당
- 5. 동적 메모리 할당 문제
- 6. 동적 메모리 할당
- 7. VB6에서의 동적 메모리 할당
- 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 메모리 할당