1

私の理解では、

例1

cPtr = (char*)malloc(100);

例2

1 char c = 0;
2 char* cPtr = &c
3 cPtr = (char*)malloc(100);

例 1 では、malloc はメモリ空間を作成し、割り当てられたメモリのアドレスの最初のブロックを返します。したがって、cPtr はヒープ内の任意のアドレスを取得します。

Example2 の 2 行目で、cPtr は c を指しています。したがって、cPtr のアドレスは c です。

このとき、例 2 の 3 行目を実行すると、cPtr の値はどうなるでしょうか? Example1 で述べたように、任意のメモリ アドレスを取得しますか? それとも、c のアドレスを保持し、スペースを作成しますか?

4

3 に答える 3

3

Example1 で述べたように、任意のメモリ アドレスを取得しますか?

はい。その行は の以前の値を上書きするだけですcPtr

それとも、c のアドレスを保持し、スペースを作成しますか?

いいえ、何も「保持」しません。 最初の例と同じように、メモリのブロックを指す呼び出しcPtrの戻り値で上書きされます。malloc()

2 番目の例の 1 行目と 2 行目は、基本的にノーオペレーションです。

于 2013-10-09T17:25:54.900 に答える