C言語のcalloc関数の用法について教えてください。

calloc は C 言語の動的メモリ割り当て関数で、連続したメモリ領域を割り当て、0 で初期化します。関数プロトタイプは次のとおりです。

void *calloc(size_t num, size_t size);

パラメーターの説明:

  1. 配列する要素の数
  2. 大きさ:各要素の大きさ。

関数は、割り当てられたメモリの開始アドレスを指すポインタを返します。割り当てが失敗した場合は、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関数の利用をお勧めします。

bannerAds