工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C言語のrealloc()活用ガイド:構文、ベストプラクティス、実例

realloc()とは

realloc()は、既に割り当てられたメモリブロックのサイズを変更するC標準ライブラリ関数です。ブロックを拡張・縮小しながら内容を保持するため、実行時に必要サイズが変わる場合の動的メモリ管理を効率化します。

構文

ptr = realloc(ptr, newSize);

ptrは以前に割り当てられたブロックを指し、newSizeは希望サイズ(バイト)です。呼び出し後、ptrは新しいブロックの先頭を指します。再割り当て成功時、元のデータが新しい場所にコピーされ、古いブロックは解放されます。

覚えておくべき重要ポイント

例 — 文字列バッファのリサイズ

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
    char *buf = malloc(10);
    if (!buf) {
        perror("malloc");
        return EXIT_FAILURE;
    }
    strcpy(buf, "Programming");
    printf("%s\n", buf);
    char *tmp = realloc(buf, 20); // バッファサイズを拡大
    if (!tmp) {
        free(buf); // 元ブロックは有効なまま
        perror("realloc");
        return EXIT_FAILURE;
    }
    buf = tmp;
    strcat(buf, " in C");
    printf("%s\n", buf);
    free(buf);
    return EXIT_SUCCESS;
}

例 — 整数配列の割り当てとリサイズ

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    int *arr = malloc(10 * sizeof(int));
    if (!arr) {
        perror("malloc");
        return EXIT_FAILURE;
    }
    /* ... 配列を使用 ... */
    int *tmp = realloc(arr, 50 * sizeof(int));
    if (!tmp) {
        free(arr);
        perror("realloc");
        return EXIT_FAILURE;
    }
    arr = tmp;
    printf("Array resized successfully\n");
    free(arr);
    return EXIT_SUCCESS;
}

実践的なヒント

C言語

  1. 消火器の安全な使用タイミングと方法:必須ガイド
  2. ペイントスプレーヤーを極める:均一で安全な塗装のためのプロガイド
  3. サーミスタを使った温度測定: Arduinoステップバイステップガイド
  4. カッターグラインダー技術の習得:実践ガイド
  5. Azure DevOps活用:デリバリー加速のための実証済みプラクティス
  6. モリブデンが現代産業を形作る仕組み:用途、利点、需給動向
  7. 完成パズルをエポキシ樹脂でタイムレスな傑作に変える
  8. C言語のcalloc():ゼロ初期化メモリ割り当てと実践例
  9. C言語free()関数完全マスター:実践ガイドと例
  10. VHDLにおける不純関数の活用:FSMの可読性と保守性向上
  11. VHDL関数マスター:効率的な設計のための実践ガイド