>백엔드 개발 >C++ >C를 사용하여 플랫폼 독립적인 방식으로 사용 가능한 시스템 메모리를 어떻게 얻을 수 있습니까?

C를 사용하여 플랫폼 독립적인 방식으로 사용 가능한 시스템 메모리를 어떻게 얻을 수 있습니까?

DDD
DDD원래의
2024-11-27 15:25:11218검색

How Can I Get Available System Memory in a Platform-Independent Way Using C  ?

플랫폼 독립적인 방식으로 사용 가능한 메모리 가져오기 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(&amp;status);
    return status.ullTotalPhys;
}

#ifdef 또는 매크로를 통해 이러한 플랫폼별 구현을 결합하면 사용 가능한 메모리를 확인할 수 있습니다. 여러 시스템에 걸쳐 정보를 바탕으로 버퍼 할당 결정을 내립니다.

위 내용은 C를 사용하여 플랫폼 독립적인 방식으로 사용 가능한 시스템 메모리를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.