Heap 영역

줍줍·2023년 4월 6일
0

C

목록 보기
7/15
post-thumbnail

Heap 영역은 내가 할당하려는 크기 이상을 참조해도 에러가 나지 않는 경우가 있다.

수정 전


  int N;
  scanf("%d", &N);
  int *s = (int *)malloc(sizeof(int));
  for (int i = 0; i < N; i++)
    scanf("%d", s + i);
  for (int i = 0; i < N; i++)
    printf("%d\n", *(s + i));

그래서 여기서 에러가 나지 않고 잘 작동하는 것이다.

수정 후


그렇지만 동적할당을 여러번 할 경우에는 메모리가 겹칠 수도 있기 때문에 아래와 같이 N을 곱해서 사용한다.

  int N;
  scanf("%d", &N);
  int *s = (int *)malloc(sizeof(int)*N);
  for (int i = 0; i < N; i++)
    scanf("%d", s + i);
  for (int i = 0; i < N; i++)
    printf("%d\n", *(s + i));

느낀점


컴퓨터 구조에서 더 자세히 배울 수 있다고 한다. 컴퓨터공학을 전공하는 친구가 알려줬는데 컴퓨터는 정말 신기하다.

profile
쉽게 설명하지 못하면 이해 못한 것

0개의 댓글