메모리 집약적인 애플리케이션을 다룰 때는 사용 가능한 메모리에 따라 버퍼를 할당하는 것이 중요합니다. 이렇게 하면 메모리 제한을 초과하지 않고 시스템이 불안정해지지 않고 처리가 진행될 수 있습니다. 크로스 플랫폼 환경에서는 사용 가능한 메모리 정보를 얻기 위해 플랫폼 독립적인 방법을 사용해야 합니다.
Unix 계열 시스템
Unix 계열 운영 체제 시스템 구성 정보를 검색할 수 있는 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
Windows에서는 GlobalMemoryStatusEx 함수를 사용하여 메모리 정보를 검색할 수 있습니다. 다음 코드는 이를 사용하는 방법을 보여줍니다.
#include <windows.h> unsigned long long getTotalSystemMemory() { MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); return status.ullTotalPhys; }
교차 플랫폼 구현
교차 플랫폼 솔루션을 생성하려면 조건부 컴파일을 사용하여 운영 체제에 따른 적절한 기능:
#ifdef __unix__ unsigned long long getTotalSystemMemory() { return sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGE_SIZE); } #elif _WIN32 unsigned long long getTotalSystemMemory() { MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); return status.ullTotalPhys; } #endif
이는 시스템에서 사용 가능한 메모리를 검색하는 일관된 방법을 제공합니다. 다양한 운영 체제에서 응용 프로그램을 사용할 수 있습니다.
위 내용은 다양한 플랫폼에 걸쳐 C에서 사용 가능한 시스템 메모리를 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!