int main(void)
{
int *x;
int *y;
x = malloc(sizeof(int));
*x = 42;
*y = 13;
}
- main 함수 안에 첫 두 줄에서는 포인터 x와 y를 선언
- x에 malloc 함수를 이용해서 int 자료형 크기(4바이트)에 해당하는 메모리를 할당
- *은 역참조 연산자로 그 주소로 가라는 의미!
- 다음에는 x와 y 포인터가 가리키는 지점에 42와 13을 저장함, 여기서 y는 포인터로만 선언되었을 뿐이지, 어디를 가리킬지에 대해서는 아직 정의가 되지 않았기 때문에 *y = 13은 문제가 됨
- 초기화되지 않은 y는 프로그램에서 임의로 가리키고 있는 곳에 13이라는 값을 저장하는 것이 오류를 발생시킴
-> y = x;라는 코드를 더해주면 y는 x가 가리키는 곳과 동일한 곳을 가리키게 돼서 x가 가리키는 곳에 동일하게 13으로 저장될 것! 42가 먼저 x에 들어오고 그다음에 13이 덮어씀
https://www.boostcourse.org/cs112/joinLectures/41307
'cs > CS50' 카테고리의 다른 글
6: 자료구조-3(연결 리스트: 도입) (0) | 2021.12.11 |
---|---|
6: 자료구조-2(배열의 크기 조정하기) (0) | 2021.12.11 |
5: 메모리-6(파일 쓰기와 읽기) (0) | 2021.12.06 |
5: 메모리-5(메모리 교환, 스택,힙) (0) | 2021.12.04 |
5: 메모리-4(메모리 할당과 해제) (0) | 2021.12.03 |