C 기초 - 포인터, 동적할당

junjeong·2021년 12월 27일
0
post-thumbnail

포인터

포인터는 메모리의 주소값을 저장하는 변수이다.(시작주소만 저장)
주소를 가리키는 변수라고 하여 포인터(가리키는 것. 가리킴을 받는 것이 아니다)라고 하는 것이다.
주소값의 크기는 동일하기 때문에 포인터의 크기는 모두 똑같다. ( x32면 4바이트, x64면 8바이트)

Q. 크기가 똑같은데 굳이 왜 자료형을 써주는가?

  • 데이터를 불러올 때에 얼마만큼 불러와야 하는지 알수 없기 때문이다.
    포인터의 자료형에 따라서 불러올 데이터의 크기가 결정된다.
    int : 시작주소부터 4바이트 읽어라.
    char : 시작주소부터 1바이트 읽어라.

동적할당 malloc함수

동적할당이란?

기존의 변수를 선언해주면 이는 메모리 구조상의 스택에 저장이 된다.
이는 함수가 끝나면 알아서 초기화가 되지만.
동적할당을 해주었을 때는 데이터가 영역에 저장되어
따로 초기화를 해주지 않는 이상 계속해서 남아있다.

이는 메모리 누수(memory leak)의 원인이 될 수 있기 때문에
잘 관리해주어야 하는 단점이 있지만
데이터를 오랫동안 남겨야 하는 상황이 있을 수도 있고
또 동적할당은 사용자가 원하는 시점에 메모리를 할당해줄 수 있다는 장점도 있다.

int *ptr;
ptr = malloc(sizeof(int)); 

// ptr 포인터 변수에 malloc함수를 통해서 4바이트(int) 만큼의 
메모리를 동적할당해주는 모습
profile
Whether you're doing well or not, just keep going👨🏻‍💻🔥

0개의 댓글

관련 채용 정보