C言語のcalloc関数の用法について教えてください。
calloc は C 言語の動的メモリ割り当て関数で、連続したメモリ領域を割り当て、0 で初期化します。関数プロトタイプは次のとおりです。
void *calloc(size_t num, size_t size);
パラメーターの説明:
- 配列する要素の数
- 大きさ:各要素の大きさ。
関数は、割り当てられたメモリの開始アドレスを指すポインタを返します。割り当てが失敗した場合は、NULLを返します。
callocはnum個分のsizeのサイズの連続したメモリ空間を割り当て、すべてのバイトを0で初期化します。mallocとは異なり、callocはメモリを割り当てるときにすべてのバイトを自動的に0で初期化しますが、mallocでは初期化は行われません。
calloc関数の使用例を以下に示します。
#include <stdio.h>
#include <stdlib.h>
int main() {
int *array;
int size = 5;
// 分配一个包含5个int类型元素的数组
array = (int *)calloc(size, sizeof(int));
if (array == NULL) {
printf("内存分配失败\n");
return 1;
}
// 输出数组元素
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
// 释放内存
free(array);
return 0;
}
配列をcalloc関数を使って割り当てて初期化し、free関数で解放するコードについて解説します。
calloc関数で確保したメモリは、使い終わったらfree関数で解放しないとメモリリークが発生します。また、callocはメモリの初期化処理を行うため、大規模メモリを確保する場合は相対的に遅くなります。メモリを確保するだけで初期化は不要な場合は、malloc関数の利用をお勧めします。