C언어 C++ Programming

[C언어] Visual Studio 디버깅에서 메모리 확인 예제(Debugging, Memory)

끄적끄적아무거나 2023. 7. 18. 07:59
반응형

 

목차

     

     

     

     

    [C Program] Visual Studio 디버깅에서 메모리 확인 예제

     

    이번에는 아래 예제를 통해 Visual Studio 2022에서 변수의 메모리 주소를 확인하는 방법에 대해 알아보겠습니다. 

     

     

    예제 코드>>

    #include <stdio.h>
    
    int main() {
        int num = 10;
        int* ptr = &num;
    
        printf("num의 주소: %p\n", &num);
        printf("ptr이 가리키는 주소: %p\n", ptr);
    
        return 0;
    }

     

     

    결과>>

    num의 주소: 0000008881F6F9F4
    ptr이 가리키는 주소: 0000008881F6F9F4

     

     

     

    이 예제에서는 num이라는 정수 변수를 선언하고, ptr이라는 포인터 변수를 선언하여 num의 주소를 가리키도록 합니다. 그리고 printf 함수를 사용하여 num의 주소와 ptr이 가리키는 주소를 출력합니다.

     

    %p는 포인터 변수의 값을 출력하는 형식 지정자입니다. 주소 값은 %p를 사용하여 출력하고, 해당 주소의 위치에 있는 데이터를 출력하기 위해서는 역참조 연산자(*)를 사용해야 합니다. 이 예제에서는 주소의 위치에 있는 데이터를 출력하지 않았고, 주소 값만을 확인하도록 했습니다.

     

     

     

     

     

     

    다음으로 그림과 같이 Debugging 포인트를 좌측에 빨간원과 같이 표기하고 Local Debugging으로 실행을 하면 위와 같이 나옵니다.

     

     

     

     

    디버깅이 진행된 상태에서 Debug > Windows > Memory > 를 선택하시면 메모리 윈도우를 불러 올 수 있습니다. 다음으로 F11키로 한칸씩 디버깅을 진행합니다.

     

     

     

     

    7번 라인에서 ptr 변수에 들어간 num의 주소 값을 확인할 수 있습니다. 

     

    +		ptr	0x0000002180cffb44 {10}	int *

     

    위 값을 메모리 윈도우에서 검색하면 아래와 같이 나옵니다.

     

     

    즉, int 4바이트에 대한 값이 0a로 들어가 있습니다. 0a는 십진수로 10입니다.

     

    정상적으로 메모리 값을 읽어옴을 알 수 있습니다. 

     

     

     

     

    한가지 번외로 위에 변수들은 모두 지역 변수(Local variable)로 아래 메모리 구조에서 stack에 위치하게 됩니다. 위치 주소는 사용 OS에 따라 임의로 정해집니다.

     

    출처:https://open4tech.com/memory-layout-embedded-c-programs/

     

     

     

     

    [C Program] Visual Studio 디버깅 메모리 확인 예제 코드 다운로드 

     

    Project7.c
    0.00MB

     

     

    반응형