任何人都可以提出,我們如何找到使用C的堆的最高地址和最低地址?我們如何找到堆的最高地址和最低地址
2
A
回答
5
在Linux系統上,可以使用帶有0參數的sbrk()來查找一端。您可以通過了解程序加載程序的段順序並檢查etext和edata來查找另一端 - 請參閱end(3)手冊頁。
所有這些都是非標準的,並且超出了C本身的範圍。
1
答案是你不能在C中。如果你檢查語言標準,你會注意到這個概念從未被提及。
堆是一些在某些操作環境中使用的實現細節(幾乎所有的都可以)。
2
你可以換您的來電malloc
保持在每次呼叫迄今所看到的最低和最高地址的軌跡:
extern unsigned char *lowest, *highest;
unsigned char *tmp = malloc(size);
if (!tmp) return 0;
if (!lowest || tmp < lowest) lowest = tmp;
if (tmp+size > highest) highest = tmp;
return tmp;
相關問題
- 1. c中的最低和最高內存地址?
- 2. arm cortex -m最小堆棧地址和SRAM地址關係
- 3. 較高地址和較低地址之間的混淆
- 4. Excel - Octects的最低IP地址
- 5. 高VS低內存地址和分支
- 6. 找到最高和最低的號碼
- 7. 找到最低和最高的多列
- 8. 爲什麼堆棧地址低於Visual C++中的堆棧地址?
- 9. 如何從ftp地址找到網址
- 10. 查找最大號碼的地址
- 11. 我們如何才能從android中的地址找到lat?
- 12. 數組的元素是否保證從低地址到高地址存儲?
- 13. 如何快速找到IP地址範圍內的IP地址?
- 14. 如何將地址添加到地址?
- 15. 如何查找最高(最新)和最低(最早)日期[R]
- 16. 確定最終用戶機MAC地址和IP地址(本地和ISP)
- 17. 在SQL如何找到最低和最高值
- 18. 當從地址找到經緯度時,如何給出地址?
- 19. 如何最好地標準化網址
- 20. 最高到最低
- 21. Elasticsearch最佳實踐(地址)
- 22. 如何將url地址重定向到我的地址
- 23. soap:地址和http:地址
- 24. MAC地址和IP地址
- 25. 我如何獲取(獲取)給定地址的最大值和最小值R
- 26. Slplit IPv4地址到最小和最大範圍
- 27. 如何查找IP地址是否是鏈接本地地址
- 28. 方向堆疊更高的存儲器地址的,以降低存儲器地址
- 29. 如何找到給定地址的ptep?
- 30. 如何找到EXC_BAD_ACCESS異常的地址?
你不知道。爲什麼? – GManNickG 2010-10-17 20:56:16
這隻能用於(某些)特定的C實現。不以任何便攜式/標準方式。但是它看起來完全不相關,你在尋找'available_memory()'還是其他的東西? – 2010-10-17 21:07:32
如果這僅僅是爲了學術興趣,而不是我*假設*,你可以迭代malloc和free,直到你發現在malloc開始失敗之前可以分配的最大單塊。你的堆開始將是(大約)該塊的開始地址,並且堆結束將是(大約)開始地址+塊的大小。儘管如此,這對某些體系結構會失敗。 32位Mac OS X,在堆中間有一個島(dylib在這裏居住)。 – 2010-10-17 21:15:03