2016-04-20 10 views
-1

ポインターのスペースをmallocする必要があるときは、ちょっと混乱します。どんな助けでも大歓迎です。NULLポインタのためにmallocする必要はありますか?いつポインタをmallocする必要がありますか?

+0

新しいメモリをポイントしたい場合は、mallocする必要があります。 NULLはメモリを指していないことを意味します。 – SLaks

+2

'NULL'かどうかにかかわらず、ポインタのための' malloc() 'スペースは幾分珍しいです。 – EOF

+1

@EOF:OPがあなたのコメントを理解していることを確認するために、ポインタ自体がポインタではなく、ポインタが指すmalloc()スペースがあります。 –

答えて

4

関数mallocは、プログラムの実行中に一定量のメモリを割り当てるために使用されます。 malloc関数は、ヒープから1ブロックのメモリを要求します。

ポインタをmallocする必要があるときは、ちょっと混乱します。

いつもポインタを使用するためにmallocを使用する必要はありません。 mallocは、実行時にスペースを動的に要求する必要がある場合にのみ使用してください。例えば、上記の例では

char arr[20]="Stack"; 
char *ptr; //It is pointer 
ptr = arr; 
printf("%s", ptr); 

は、私はmallocを使用していないが、それでも私は、ポインタptrを使用することができます。重要な唯一のことは、ポインタがあなたが仕事をしようとしている有効なメモリの場所を指していることです。どちらのポインタ

int a; 
int *ptr=&a; 

または、実行時にメモリの

要求mallocを使用して、変数のアドレスを割り当てます。

int *ptr=malloc(sizeof(int)); 

私はNULLポインタのためをmallocする必要がありますか?

答えではありません。計算では、ヌルポインタには、ポインタが有効なオブジェクトを参照していないことを示す値が予約されています。 NULLはポインタに割り当てられた値で、有効なオブジェクトを参照していないことを意味します。ちょうどポインタにNULLの値を割り当ててください。

int *ptr=NULL: 
関連する問題