以與平台無關的方式取得可用記憶體C /g
為了分配緩衝區以符合系統記憶體可用性,同時保持在允許的範圍內限制,確定可用記憶體至關重要。這些知識可以在不超出系統容量的情況下做出動態分配決策。記憶體狀態(無論是虛擬還是實體)可能不會產生重大影響,但獲取此資訊對於跨 Windows、OS X、Linux 和 AIX 的跨平台相容性至關重要。
對於類別 UNIX 作業系統, sysconf 函數提供對系統記憶體資訊的存取。透過檢索可用頁面數量 (_SC_PHYS_PAGES) 和頁面大小 (_SC_PAGE_SIZE),可以計算總系統記憶體:
#include <unistd.h> unsigned long long getTotalSystemMemory() { long pages = sysconf(_SC_PHYS_PAGES); long page_size = sysconf(_SC_PAGE_SIZE); return pages * page_size; }
對於 Windows,GlobalMemoryStatusEx 提供了一種直接取得系統記憶體統計資料的方法。傳回的MEMORYSTATUSEX 結構包含物理記憶體詳細信息,可用於計算總系統記憶體:
#include <windows.h> unsigned long long getTotalSystemMemory() { MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); return status.ullTotalPhys; }
透過#ifdef 或巨集組合這些特定於平台的實現,可以確定可用記憶體跨多個系統並相應地做出明智的緩衝區分配決策。
以上是如何使用 C 以獨立於平台的方式取得可用系統記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!