はじめに
メモリの動的確保に使われるmalloc
実際に使うとき
example.c
# include <stdio.h>
void main(){
int num;
array=(int*)malloc(sizeof(int)*num);
}
のように宣言する。
この書き方は何をしているのかを考える。
追記
この記事はコメントを受けて一部を編集しました。
mallocの宣言では何をしているのか
上で書いた通り、mallocは
array=(int*)malloc(sizeof(int)*num);
のように宣言する。
後ろから考えるとsizeof(int)*numの部分は確保するメモリの大きさを指示している。ここではint型のサイズの値が入る領域を5つ分確保している。しかしsizeofを利用すると返ってきた値は、size_t型となってしまう。そこで mallocの前半((int)によってint型にキャストしている。(int*))では、割り当てられたメモリを(int*)にキャストして割り当てられたメモリを4つずつに分割しているということである。