포인터와 메모리 관리: 시스템 프로그래밍 기초

C 문법

초급 난이도
문법 타입
11/01 등록일

포인터와 메모리 관리: 시스템 프로그래밍 기초

초급
태그
기초 문법 입문 포인터 메모리관리
## 개요
C 언어는 하드웨어 및 운영체제에 가까운 저수준 제어를 가능하게 하는 문법 특징을 가지고 있습니다. 포인터와 메모리 관리는 시스템 프로그래밍에서 필수적인 개념으로, 메모리 주소 직접 조작과 동적 자원 할당을 가능하게 합니다.

## 주요 특징
- **메모리 주소 참조**: 변수의 실제 메모리 주소를 통해 데이터 조작 가능
- **동적 메모리 할당**: malloc/free 함수로 실행 중에 메모리 공간 확보/해제
- **포인터 연산**: +, - 연산자를 사용한 배열 및 구조체 처리
- **메모리 누수 방지**: 자원 해제를 반드시 명시적으로 수행해야 함

## 사용법
다음 예제는 동적 메모리를 할당하고 포인터로 데이터를 관리하는 방법을 보여줍니다.

## 주의사항
- malloc()이 NULL을 반환할 수 있으므로 항상 체크 필요
- free() 호출 후 포인터 재사용 시 메모리 누수 발생
- 배열 접근 시 범위 초과 참조 시 segmentation fault 유발
- NULL 포인터를 해제하면 프로그램 중단

## 관련 문법
- **배열**: 포인터로 간접참조 가능
- **구조체**: 멤버 접근 시 포인터 사용
- **함수 포인터**: 함수 주소 전달 가능
코드 예제
#include <stdio.h>
#include <stdlib.h>

int main() {
    int *data = (int *)malloc(5 * sizeof(int));
    if (data == NULL) {
        printf("메모리 할당 실패
");
        return 1;
    }

    for (int i = 0; i < 5; i++) {
        data[i] = i * 10;
    }

    printf("데이터: ");
    for (int i = 0; i < 5; i++) {
        printf("%d ", data[i]);
    }
    printf("
");

    free(data);
    return 0;
}
등록일: 2025년 11월 01일 02:33
언어 정보
언어
C
카테고리
General
인기도
#5
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요