在C /g 中取得可用記憶體
在現代應用程式中,最佳化記憶體使用以增強效能和穩定性至關重要。為了根據可用記憶體有效地分配緩衝區,開發人員需要知道如何檢索此資訊。本文探討了在 C /g 中取得可用記憶體的與平台無關的方法。
類 UNIX 作業系統
類 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
在 Windows 上,GlobalMemoryStatusEx 函數提供有關係統記憶體使用情況的資訊。透過將 dwLength 成員設定為 MEMORYSTATUSEX 結構體的大小並呼叫函數,開發者可以存取 ullTotalPhys 成員,該成員代表物理記憶體總量。
#include <windows.h> unsigned long long getTotalSystemMemory() { MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); return status.ullTotalPhys; }
平台獨立性
為了讓程式碼獨立於平台,開發人員可以使用#ifdef指令來定義特定於系統的版本getTotalSystemMemory 函數。例如,以下程式碼結合了這兩種方法:
#ifdef __UNIX__ unsigned long long getTotalSystemMemory() { return ::getTotalSystemMemory(); } #elif defined(_WIN32) // Windows unsigned long long getTotalSystemMemory() { return ::getTotalSystemMemory(); } #else #error "Unsupported platform" #endif
以上是如何在 C /g 中取得可用系統記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!