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