C でのステートメントについて、 、、?int ** p = NULL;のメモリ割り当てについて議論してください。スタック上にあるか、null の場所にあるか、または他の場所にあるか???p*p**p
2 に答える
1
pどこかを指す単なる変数です。- その型は
int**、へのポインターを指すことができることを意味しますint。 - メモリを割り当てるコードを記述していないため、メモリの割り当ては行われません。
- ..もちろん、それ自体のメモリ割り当てを除きます
p。32ビットのアドレス空間を想定すると、4バイトのメモリがスタックに割り当てられ、そのメモリアドレスの値は0(NULL)です。
于 2012-08-24T23:16:02.037 に答える
1
pint **スタック上のポインターになり、値が含まれます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 に答える