使用しているプラットフォームを教えていただければ、より適切な回答が得られます。C で回答します。これはかなり簡単ですが、この質問は Java では意味がなく、アセンブラーで説明するのははるかに難しいためです。
まあ、これは誤解の良い例です。メモリを割り当てるビジネスに従事するべきではありません。これは、ランタイム ライブラリ (C の malloc()、Java の new など) に任せるのが最善です。
彼らが返すアドレスは、似たようなものかもしれません。これはメモリ内の場所にすぎません。番地が通りから家までの場所であるように、何百万バイトも使用できるため、「123」よりも大きな表記を使用します。
このアドレスを取得するには、malloc
(メモリ割り当て) のような方法を使用して、必要なメモリ量を伝えます。整数を格納したいとしましょう。これは通常 2 バイトですが、一部のプラットフォームでは 4 バイトになる場合があるため、次のように計算します。
malloc( sizeof( int));
これは次のようなアドレスを返す可能性があります0x0f342
0x0f342
したがって、「アドレスに値を保存したい」と言うかもしれません4
。しかし、これは面倒です。実行サイクルのさまざまな時点でアドレスが変更される可能性があるため、ポインターと呼ばれる変数を使用します。
int *myInt;
myInt = malloc( sizeof(int));
*myInt = 4;
は*
、「次の変数をアドレスとして扱い、割り当てられた値をそれが指すこの場所に格納する」(つまり、ポインター)と言います。これで、特定のアドレスを追跡する必要さえなくなりました!
残念ながら、C では割り当てられたメモリのサイズを (通常は) 追跡する良い方法がないため、その側面については独自の計算を行う必要があります。