メモリ管理
calloc()
: 連続する num 個の長いサイズのスペースを動的に割り当てます。各バイトは 0 に初期化されます。つまり、長さの num*size バイトのメモリ空間が割り当てられ、各バイトの値は 0 です。
void *calloc(int num, int size);
malloc()
: ヒープ領域は、データを格納するために指定されたサイズのメモリ空間を割り当て、初期化されておらず、その値は不明です
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); // 释放内存
}