메모리 할당이 사용 가능한 시스템 리소스에 맞게 조정되어야 하는 시나리오에서는 사용 가능한 메모리 양을 결정해야 합니다. 런타임에 응용 프로그램. 이 문서에서는 Windows, macOS, Linux 및 AIX에서 사용 가능한 메모리를 플랫폼 독립적으로 검색하는 방법을 살펴봅니다.
sysconf 함수는 다음을 제공합니다. 메모리 정보를 포함한 시스템 구성 매개변수를 얻는 표준화된 방법입니다. 아래 코드는 sysconf를 사용하여 총 물리적 메모리를 쿼리합니다.
#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 함수는 총 물리적 메모리를 포함하여 메모리 사용량에 대한 자세한 정보를 제공합니다.
#include <windows.h> unsigned long long getTotalSystemMemory() { MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); return status.ullTotalPhys; }
애플리케이션에서 이 정보를 사용하려면 사용 가능한 메모리를 반환하는 크로스 플랫폼 함수:
#ifdef WIN32 unsigned long long getTotalSystemMemory() { return GlobalMemoryStatusEx(); } #else unsigned long long getTotalSystemMemory() { return sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGE_SIZE); } #endif
그런 다음 사용 가능한 메모리를 기준으로 버퍼를 할당할 수 있습니다.
void allocateBuffers() { unsigned long long availableMemory = getTotalSystemMemory(); // Allocate buffers according to `availableMemory` }
가상 메모리와 물리적 메모리의 개념이 다를 수 있다는 점에 유의하세요. 플랫폼과 운영 체제에 따라 다르므로 각 대상 시스템에 맞는 기능을 사용하는 것이 중요합니다.
위 내용은 다양한 플랫폼에 걸쳐 C에서 사용 가능한 시스템 메모리를 어떻게 검색할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!