請考慮我的系統有內存,但分散在不同的地方(碎片)。沒有四個連續的存儲位置是免費的。在這種情況下,如果我在C語言中聲明一個大小爲10的字符數組,會發生什麼?內存受限系統中的陣列
3
A
回答
8
如果「我的系統內存,但它是分散在不同地方的(斷裂)」意味着,heap virtual memory是零散的,「聲明大小爲10的字符數組」手段,您創建的字符數組在stack memory:
char str[10];
,然後數組將成功創建。
如果「聲明大小爲10的字符數組」手段,您使用malloc分配存儲器()(在堆上分配):
char *str2;
str2 = (char*) malloc(10 * sizeof(char));
,然後malloc()函數將返回NULL。
2
如果您的所有內存(包括堆棧)都是這樣碎片化的,那麼您可以使用支持非連續堆棧的編譯器(或運行時系統) - 在這種情況下,它可能會支持非連續數組 - 或者基本上你做的所有事情(比如調用子例程)都會導致堆棧溢出並導致程序崩潰。
+0
好的。感謝您的答覆。因此,在分割堆棧的情況下,支持非連續堆棧的編譯器似乎可以解決這個問題。 gcc是否支持非連續堆棧?你能告訴我一個支持非連續堆棧的良好編譯器風格嗎? – 2011-02-05 01:03:16
相關問題
- 1. 系統C命令和內存限制?
- 2. 帶有內存限制的系統的散列表
- 3. 如何在內存受限系統上使用cx_Oracle下載巨大的Oracle LOB?
- 4. Dynamics AX 2012受限系統管理員
- 5. 在內存限制的嵌入式系統中使用boost
- 6. 粒子系統陣列
- 7. Heroku內存限制是否包含運行操作系統所需的內存?
- 8. Php執行 - 系統內存
- 9. GPU - 系統內存映射
- 10. SSMS系統內存不足
- 11. Windows和系統內存
- 12. 系統內存異常
- 13. 如何限制Akka.net系統的內存消耗?
- 14. PHP內存限制取決於系統的硬盤或RAM?
- 15. 加密和/或解密內存和存儲受限系統上的大文件(AES),並進行「災難恢復」
- 16. 系統權限
- 17. 權限系統
- 18. 在內存中FAT文件系統
- 19. 內存中FUSE文件系統
- 20. 2d陣列的內存流
- 21. c內存分配和陣列陣列
- 22. decrypted.Skip不在系統陣列(net.2)vb.net
- 23. 接受()系統調用
- 24. 在Java中,堆內存vs系統內存
- 25. 在內存保護操作系統中讀取內存
- 26. 陣列操作系統陣列改造d3.js JSON格式
- 27. 如何在內存受限的嵌入式系統上處理大數據傳輸?
- 28. 用C獲得系統的總內存
- 29. 系統的總內存消耗
- 30. SH:內存不足的系統調用
好的。 Thx爲您的答覆! – 2011-02-05 01:00:00