📘

C言語 malloc関数について

2023/02/25に公開

学んだことのまとめのつもりなので間違えてるとこがありましたら、教えていただけると助かります!

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