ホームページ > バックエンド開発 > C++ > C /g で利用可能なシステム メモリを取得するにはどうすればよいですか?

C /g で利用可能なシステム メモリを取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-03 17:07:11
オリジナル
688 人が閲覧しました

How to Get Available System Memory in C  /g  ?

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート