動的なメモリ確保(malloc関数,calloc関数)を理解しよう

malloc/calloc関数とは,プログラム実行時にヒープ領域と呼ばれるメモリ領域を新たに確保することができる関数です.配列を使ったときは,配列番号がそのメモリ領域の位置を表 していました.プログラム実行中に,callocで作られたメモリ領域の 位置はどうやって扱うのでしょうか?そこでポインターの登場です.コンピュータの内部においては,変数(メモリ)の領域はメモリ内の,「あるアドレス」に位置しています.このときのアドレスを格納するのがポインタ変数です.

calloc関数の記述例

#include<stdlib.h>
struct Student *node = calloc(1, sizeof(struct Student));

注意 Win32でのcalloc関数の使い方

Win32(Visual studio)では、下記のようにcallocが返してくるポインタの値をキャストする必要があります。

#include<stdlib.h>
//int型の場合
int* a = (int*)calloc(na,sizeof(int));
//char型の場合
char* a = (char*)calloc(3,sizeof(int));