はじめに
メモリの動的確保に使われる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つずつに分割しているということである。