-
Stack around the variable ' ' was corrupted[TROUBLESHOOTING] 2021. 3. 16. 12:38728x90반응형
발생 이유
변수의 크기를 넘어서는 인자를 읽을 때 발생
문제코드
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반응형'[TROUBLESHOOTING]' 카테고리의 다른 글
C++ 개체에 멤버 함수과(와) 호환되지 않는 형식 한정자가 있습니다. (1) 2021.01.13 티스토리 highlight.js / highlightjs-line-numbers 안될 때 해결 방법 (0) 2021.01.12 vector subscript out of range (0) 2021.01.11 [MySQL 8.0] EER Diagram 한글 깨짐 해결 (★table 제목★) (0) 2020.11.27