質問: windowsは使用中のメモリ位置をどのように追跡しますか? メモリリークの(基本的な)定義についての私の理解は、予約されたメモリ内の場所ですが、メモリを予約したアプリケーション内のそのメモリへのポインタが削除/失われました。私の質問はこれです:windows(または実際に任意のオペレーティングシステム)がメモリがまだ予約されていることを認識するためにに使用されたポインタの破壊後アプリケーション内でそのメモリを管理するには、使用中のメモリを個別に追跡する必要があります。 これはどこでどのように行われますか?
回答: 正解です。すべてのオペレーティングシステムは、メモリの使用と割り当てを個別に追跡します。これはその重要な機能の1つです。多くの理由で、メモリの完全な制御をユーザーランドプロセスに渡すことは単に意味がありません-セキュリティは一例として指摘できます:プロセスは機密情報をメモリに保存できるため、オペレーティングシステムはどのプロセスが許可されるかを管理する必要がありますアクセスします。通常、すべてのオペレーティングシステムには、仮想メモリを追跡するmemory management(またはwindowsのmemory manager)という名前のサブシステムがあります。次に、osの別の部分であるハードウェア抽象化により、この仮想メモリが物理デバイスにマップされます。もちろん、これにより、ユーザープロセスと物理メモリ間の直接的なやり取りが禁止されます。オペレーティングシステムのこの部分と直接対話することは、パブリックapiを介して部分的に利用できます-windowsの場合は メモリ管理関数 を参照してください。 linuxでは、メモリにアクセスする方法がいくつかあります。 このページ それを始めるのに最適な方法です。