1) malloc과 포인터 복습

2022. 6. 4. 19:47·CS/자료구조

아래와 같은 main 함수 코드가 있습니다. 여기서 문제가 될 만한 지점을 발견할 수 있나요?

int main(void)
{
    int *x;
    int *y;

    x = malloc(sizeof(int));

    *x = 42;
    *y = 13;
}

main 함수 안의 첫 두 줄에서는 포인터 x와 y를 선언합니다.

그리고 x에는 malloc 함수를 이용해서 int 자료형 크기에 해당하는 메모리를 할당합니다.

그 다음에는 x와 y 포인터가 가리키는 지점에 각각 42와 13을 저장합니다.

여기서 문제가 될 만한 부분은 *y = 13 입니다. y는 포인터로만 선언되었을 뿐이지, 어디를 가리킬지에 대해서는 아직 정의가 되지 않았습니다.

따라서 초기화 되지 않은 *y는 프로그램 어딘가를 임의로 가리키고 있을 수도 있습니다.

따라서 그 곳에 13이라는 값을 저장하는 것이 오류를 발생시킬 수도 있는 것이죠.

 

아래 코드와 같이 y = x; 라는 코드를 더해주면,  y는 x가 가리키는 곳과 동일한 곳을 가리키게 됩니다.

따라서 *y = 13; 으로 저장하면  x가 가리키는 곳에도 동일하게 13으로 저장될 것입니다.

 

y = x;

*y = 13;
반응형

'CS > 자료구조' 카테고리의 다른 글

6) 연결 리스트: 트리  (0) 2022.06.07
5) 연결 리스트: 시연  (0) 2022.06.07
4) 연결 리스트: 코딩  (0) 2022.06.07
3) 연결 리스트: 도입  (0) 2022.06.07
2) 배열의 크기 조정하기  (0) 2022.06.04
'CS/자료구조' 카테고리의 다른 글
  • 5) 연결 리스트: 시연
  • 4) 연결 리스트: 코딩
  • 3) 연결 리스트: 도입
  • 2) 배열의 크기 조정하기
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    순차 탐색
    DFS
    코딩
    캘리브레이션
    코딩테스트
    왜곡보정
    c언어
    C언어 기초
    다이나믹 프로그래밍
    코딩기초
    큐
    이미지처리
    선택정렬
    알고리즘
    n진법 변환
    인접행렬
    백준
    BFS
    에라토슽네스의 체
    그리디
    if문
    삽입 정렬
    자료구조
    스택
    인접리스트
    소수찾기
    코딩기초스킬
    정렬
    코딩문제
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
1) malloc과 포인터 복습
상단으로

티스토리툴바