[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;

}

 

 

 

참고 사이트

m.blog.naver.com/PostView.nhn?blogId=vovheas104&logNo=220514108951&proxyReferer=https:%2F%2Fwww.google.com%2F

m.blog.naver.com/PostView.nhn?blogId=zkd1750&logNo=90188086649&proxyReferer=https:%2F%2Fwww.google.com%2F

 

 

 

728x90
반응형