C언어 동적 할당 및 해제 malloc 예시 코드

입력 길이를 미리 알 수 없는 문자열은 필요한 크기만큼 동적 할당할 수 있다. 할당한 메모리는 사용이 끝난 뒤 반드시 해제한다.




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
    char *items[3] = { NULL };
    char buffer[100];

    for (size_t i = 0; i < 3; ++i) {
        if (fgets(buffer, sizeof buffer, stdin) == NULL) break;
        buffer[strcspn(buffer, "\n")] = 0;
        items[i] = malloc(strlen(buffer) + 1);
        if (items[i] != NULL) strcpy(items[i], buffer);
    }

    for (size_t i = 0; i < 3; ++i) free(items[i]);
}




malloc()이 실패할 수 있으므로 반환값을 확인해야 한다. 입력은 길이 제한이 없는 함수 대신 fgets()를 사용한다.

Comments

댓글을 불러오고 있습니다.