[[프로그래밍_NOTE]]/C , C++

char 메모리 그림

갑빠돌격기 2008. 8. 24. 11:49

#include<stdio.h>
#include<string.h>

void main()
{
    char c1;
    char c2;
    char c3;

    strcpy(&c1,"123");
    strcpy(&c2,"abcd");
    strcpy(&c3,"5678");

    printf("c1 -> %s\n",&c1);
    printf("c2 -> %s\n",&c2);
    printf("c3 -> %s\n",&c3);
}

[[  결과  ]]

사용자 삽입 이미지









 Q) 왜 c1 , c2는 아무것도 출력하지 않는 것일까?


[[  분석  ]]
char 의 메모리 사이즈는 1byte이지만,
실제로 윈도우(xp)상에서의 메모리 관리는 4byte단위로 이루어진다.

위의 결과를 간단히 그려보면 아래와 같다.

사용자 삽입 이미지


strcpy() 함수에서 문자열의 마지막에 \0 (NULL)을 삽입하는 과정에서
다른 변수의 영역을 침범하기 때문에 마지막에
출력문에서 c1 , c2 는 아무것도 출력하지 못하는 것이다.