メモリはバイトの大きな配列と考えることができます。
配列の途中にポインタがある場合、ポインタと同じ場所を指している他のポインタがいくつあるか教えてください。それとも、あなたがそれを指しているメモリの場所に私が保存した情報の量を教えてもらえますか?または、少なくともポインタの場所に保存されているオブジェクトの種類を教えていただけますか?この質問のすべてに答えることは本当に不可能であり、質問は奇妙に見えます。一部の言語は、後でそのような情報を追跡できるようにメモリ管理ルーチンに追加情報を追加しますが、C ++ではオーバーヘッドが最小であるため、答えは不可能です。
最初の質問では、スマートポインターを使用して処理できます。たとえばshared_ptr
、参照カウンターを使用しshared_ptr
て、メモリ位置を指している数を把握し、オブジェクトの寿命を制御できます(ただし、の現在の設計でshared_ptr
は、それを読み取ることはできません。カウンター)。
動的に割り当てられたメモリのサイズをクエリするための非標準のプラットフォーム依存ソリューションがありますが(たとえば_msize
、Windowsやmemory_size
Unix)、それは、移植性がなく、を使用して割り当てられた動的メモリでのみ機能しmalloc
ます。C++では、これに注意する必要があります。この機能が必要な場合は、そのソリューションを実装し、必要がない場合は、追加のコストを支払う必要はありません。