F.R.I.D.A.Y.

VS ERROR C4700 : 초기화되지 않은 * 지역 변수를 사용했습니다. 본문

DEV/Tip

VS ERROR C4700 : 초기화되지 않은 * 지역 변수를 사용했습니다.

F.R.I.D.A.Y. 2019. 4. 2. 15:38
반응형

 종종 프로그램을 작성하다가 보면 아래와 같은 런타임 오류가 발생하는 경우가 있습니다.

Run-Time Check Failure #3 - The varible '*' is being used without being initialized.

 이 문제는 왜 발생하는걸까요? 위 문제는 아래 코드로부터 발생되었습니다.

#include <stdio.h>

int main(void) {

	int a;

	printf("변수 a의 값은 %d입니다.", a);

	return 0;
}

 위 코드를 작성하고 컴파일을 진행하면 아래와 같은 경고가 발생합니다. 컴파일러 경고 수준에 따라 경고가 오류로 발생할 수도 있습니다.

C4700 오류


1. 원인

 말 그대로 a 변수를 초기화 하기 전에 해당 변수를 사용해 발생하는 문제입니다.

 변수를 처음 만들게 되면 기존 메모리에 들어있는 값을 그대로 사용하게 되기 때문에 어떤 값이 들어있는지 알 수 없습니다. 그래서 예외 발생의 가능성이 있죠. 따라서 프로그램이 변수에 들어있는 값을 예상할 수 있는 범위 이내에 두게 하기 위해 초기화를 진행합니다.


2. 해결

 문제를 해결하는 방법은 사용 전에 어떠한 값을 대입함으로써 초기화를 진행하면 됩니다.

 이번 코드에서는 아래와 같은 방법으로 문제를 해결할 수 있습니다.

#include <stdio.h>

int main(void) {

	int a = 0;

	printf("변수 a의 값은 %d입니다.", a);

	return 0;
}

 

728x90
반응형
Comments