로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

모두를 위한 컴퓨터 과학 (CS50 2019)

임시 이미지 David J. Malan (데이비드 J. 말란)
http://www.boostcourse.org/cs112/forum/121235
좋아요 15203 수강생 32900
#include <stdio.h>
#include <stdlib.h>

int main(){

    int *list = malloc(3 * sizeof(int));

    list[0]=1;
    list[1]=2;
    list[2]=3;

    int *tmp = realloc(list, 4 * sizeof(int));

    printf("list = tmp 이전\n");
    printf("%p\n", &list[0]);
    printf("%p\n", &tmp[0]);
    printf("\n");
    
    list = tmp; // 이 코드를 안써도 이미 x와 tmp의 첫주소가 같다고 나오더라구요
    printf("list = tmp 이후\n");
    printf("%p\n", &list[0]);
    printf("%p\n", &tmp[0]);    

    free(list);    
}


위 코드의 실행결과는 이렇게 나옵니다

강의를 보고 realloc 과 관련해서 궁금증이 생겨 이것저것 시도해보다가
list와 tmp의 주소를 확인해보니 realloc  만으로도 두 배열의 첫주소가 같아지는 것 같습니다.
그런데 한번 더  list = tmp ; 코드를 입력해서 주소를 같게 만드는 이유가 있을까요?