C でのステートメントについて、 、、?int ** p = NULL;
のメモリ割り当てについて議論してください。スタック上にあるか、null の場所にあるか、または他の場所にあるか???p
*p
**p
質問する
182 次
2 に答える
1
p
どこかを指す単なる変数です。- その型は
int**
、へのポインターを指すことができることを意味しますint
。 - メモリを割り当てるコードを記述していないため、メモリの割り当ては行われません。
- ..もちろん、それ自体のメモリ割り当てを除きます
p
。32ビットのアドレス空間を想定すると、4バイトのメモリがスタックに割り当てられ、そのメモリアドレスの値は0(NULL)です。
于 2012-08-24T23:16:02.037 に答える
1
p
int **
スタック上のポインターになり、値が含まれますNULL
。
を評価しようと*p
すると、逆参照を試みるため、実行時エラーが発生しますNULL
。ただし、実行時エラーが発生しない場合は、メモリ位置の値になります0
。
評価しよう**p
としても、評価することが不可能であるため、到達すること*p
は不可能です (実行時エラーが発生します)。ただし*p
、実行時エラーが発生しなかった場合は**p
、 value at memory location が指すメモリ ロケーションの値になります0
。
編集:個別の変数として存在しないため、どこにも割り当てられません*p
。**p
メモリには変数 が 1 つだけありp
、それがスタックに格納されます。もしそうならint i = 10;
、どこにi * 5
保存されていますか?
于 2012-08-24T23:03:20.930 に答える