[TROUBLESHOOTING]
Stack around the variable ' ' was corrupted
말하는펭귄
2021. 3. 16. 12:38
728x90
반응형


발생 이유
변수의 크기를 넘어서는 인자를 읽을 때 발생
문제코드
char* phonebook[10000]; //문자열 저장 배열
for(int i=0;i<n;i++)
scanf("%s", &phonebook[i]); //★에러발생
코드의 문제점
scanf 함수로 문자열을 받을 때 잘못된 형식 사용
scanf 함수에서 포인터를 이용하여 입력을 시도
문제 코드에서는 char* phonenum = "010111111111"; 처럼 문자열이 저장된 공간의 주소를 포인터로 읽는다.
하지만 scanf는 실시간으로 문자열을 입력받는 것이기 때문에 따로 저장 공간이 필요하다.
받은 데이터를 저장할 공간이 필요한데 위 처럼 포인터로 받게 되면 주소값만을 읽게되어 문자열을 저장하지 못하고 에러가 난다.
해결 코드
char* phonebook[10000];
for(int i=0;i<n;i++) {
char phonenum[10];
scanf("%s", &phonenum);
phonebook[i]=phonenum;
}
참고 사이트
728x90
반응형