📘
C言語 malloc関数について
学んだことのまとめのつもりなので間違えてるとこがありましたら、教えていただけると助かります!
malloc()とは?
- #include<stdlib.h> でつかえる
- メモリを割り当てるときに使う(配列、構造体とか...)
構造体ではmalloc()を使うが、何バイト分のメモリを確保してる?
- 確保するメモリは構造体の中の要素に左右される
- メモリの確保は8で区切られる
したがって、data、Student_name と next の合計サイズが28バイトである場合でも、32バイトのメモリが割り当てられることになる。
実行結果
割り当てられたメモリ : 32 Byte
コード
#include<stdio.h>
#include<stdlib.h>
typedef struct NODE{
int data;//4バイト
char Student_name[16];//16バイト
struct NODE *next;//8バイト
//合計は 4+16+8=24 で 28バイト
}node;
int main (void){
node *newnode;
newnode=malloc(sizeof(node));
//メモリの確保は8で区切られる 28バイトの場合だと32バイト確保する
printf("割り当てられたメモリ : %ld Byte\n",sizeof(node));
}
Discussion