當我們動態分配內存時,內存是否佔用連續的內存段。動態內存分配
Q
動態內存分配
2
A
回答
0
不一定,通常也不是。可能有不同的分配機制。
許多人將在分配的塊之間存儲元數據,根據對象大小拆分堆以及其他內容。你不能依賴於返回的指針的連續性。
4
是的,分配實際上是連續的(如果你用一個malloc()調用得到它)。它可能不是物理上連續的,但從應用的角度來看,你通常不關心。
2
這取決於你究竟在問什麼。例如,假設您有這個C代碼:
char* a = malloc(100);
char* b = malloc(100);
a和b指針每個都有100個字節分配給它們。但是,您不能假定分配給b的100個字節恰好在分配給100個字節之後,反之亦然,事實上,它們的位置相對於彼此是正確的。所以從這個意義上說,不,它們不是連續的。
但是,在每個100字節的塊內,從程序的角度來看,這100個字節是連續的。也就是,a[1]
與a[0]
和a[2]
相距一個字節。
2
您應該將虛擬內存的概念與物理內存中的一個分開。
儘管每個分配的塊(單個對象或一個對象數組)都有一個連續的虛擬空間(從您的動態內存分配器提供給您的地址開始),但它可以根據實際內存分配底層操作系統管理內存。
當然,如果虛擬內存不存在,它們將對應,否則對於正在使用它的程序是連續的,但不在存儲器的物理佈局中。
相關問題
- 1. 動態內存分配
- 2. 動態內存分配
- 3. java動態內存分配
- 4. 動態內存分配
- 5. RECV動態內存分配
- 6. 動態分配內存
- 7. 動態內存分配在C++上的動態分配內存中
- 8. 內存分配和動態內存分配
- 9. 動態內存分配不匹配
- 10. 動態與靜態內存分配
- 11. 動態內存分配問題
- 12. 使用malloc分配動態內存
- 13. 動態分配內存的所有權
- 14. 使用fgets +動態內存分配
- 15. fortran77中的動態內存分配
- 16. 動態內存分配教材?
- 17. 帶字符的動態內存分配
- 18. scanf之後的動態內存分配
- 19. Mips動態內存分配和指針
- 20. 動態內存分配套接字C
- 21. 動態內存分配 - 二維數組
- 22. MPI中的動態內存分配
- 23. auto_ptr的動態內存分配
- 24. 二維動態內存分配 - ObjectiveC
- 25. 在GPU上動態分配內存
- 26. 動態內存分配在for循環
- 27. int數組的動態內存分配
- 28. VB6中的動態內存分配
- 29. 動態鎖定內存分配器
- 30. Arraylists的動態內存分配?