Love Every Moment

〔C언어〕코드 실행 결과를 시각화하는 사이트 추천 본문

PROGRAMMING::LANGUAGE/C

〔C언어〕코드 실행 결과를 시각화하는 사이트 추천

해 송 2022. 1. 3. 18:35
반응형

 

Pythontutor

 

C Tutor - Visualize C code execution to learn C online

Write code in C (gcc 9.3, C17 + GNU extensions) C (gcc 4.8, C11) [older but more stable] Someone is typing ... Visualize Execution Live Programming Mode

pythontutor.com

 

C언어를 연습하면서 포인터가 실제로 어떻게 작동하는지, 메모리 구조 상에서 어떻게 저장되는지 혼란이 생길 때가 많았다.

그래서 추천 받은 사이트가 파이썬 튜터였는데 아주 많은 도움이 되었다.

마치 디버깅 툴처럼 next 버튼을 누르면 차례대로 코드를 실행한 결과를 보여준다.

 

 

이렇게 코드를 짜서 아래의 Visualize Execution 버튼을 누르면

 

 

해당 단계마다 어떻게 데이터가 변화하고 있는지 시각화하여 보여준다.

예를 들어 위의 사진에서는 i = 1 인 상태에서 free(arr[i]); 하였으므로 arr[1] 이 메모리 해제된 상태이다.

하지만 arr[1] 은 여전히 이미 해제된 메모리를 가리키고 있는 상태, 즉 댕글링 포인터 상태이다.

따라서 arr[i] = 0; 으로 초기화해주면 arr[0] 과 같이 NULL 이 된다.

 

 

int main() {
  int **arr;
  int i;
  int j;
  int k;
  
  arr = (int **)malloc(sizeof(int *) * 4);
  k = 0;
  i = 0;
  while (i < 4)
  {
    arr[i] = (int *)malloc(sizeof(int) * 4);
    j = 0;
    while (j < 4)
    {
      arr[i][j] = k++;
      ++j;
    }
    ++i;
  }
  i = 0;
  while (i < 4)
  {
    free(arr[i]);
    arr[i] = 0;
    ++i;
  }
  free(arr);
  arr = 0;
  return 0;
}

 

이중 포인터가 메모리 구조 상에서 어떻게 작동하는지 항상 헷갈렸는데 정말 많은 도움이 되었다.

C언어 말고도 다른 프로그래밍 언어의 시각화도 지원하니 앞으로 자주 이용해야겠다.

반응형
Comments