【C言語】メモリ管理

メモリ管理

  • calloc(): 連続する num 個の長いサイズのスペースを動的に割り当てます。各バイトは 0 に初期化されます。つまり、長さの num*size バイトのメモリ空間が割り当てられ、各バイトの値は 0 です。
    • void *calloc(int num, int size);
  • malloc(): ヒープ領域は、データを格納するために指定されたサイズのメモリ空間を割り当て、初期化されておらず、その値は不明です
    • void *malloc(int num);
  • free(): アドレスが指すメモリ ブロックを解放し、動的に割り当てられたメモリ空間を解放します。
    • void free(void *address);
  • realloc(): メモリを再割り当てし、メモリを newsize に拡張します
    • void *realloc(void *address, int newsize);

void *: 未定型のポインタ、C、C++ は型キャストにより他の型ポインタに変換可能

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char name[100];
    char *description;
    strcpy(name, "Zara Ali");
    description = (char*)malloc(200*sizeof(char));  //  分配内存
    description = (char*)calloc(200,sizeof(char));
    description = (char*)realloc(description, 100*sizeof(char));    //  重新分配内存
    free(description);  //  释放内存
}

おすすめ

転載: blog.csdn.net/weixin_46143152/article/details/126688351