문제를 free를 선언하지 않고 아래의 코드와 같이 제출하니 해결되었습니다.
동적 할당을 한 이후에는 free로 메모리 해제를 해주어야 한다고 알고 있었는데 어떤 점에서 문제가 생겼던 것인지 궁금합니다.
해결방식:
1) 동적할당 시에 입력된 n만큼 할당하지 않고 n의 최대 갯수인 30을 while문 밖에 선언하였음.
2) free 선언을 안 하고 프로그램 종료.
while문 밖에 free선언을 시험삼아 해보았는데,
arr이랑 num이랑 선언되지 않은 변수라고 하며 에러가 뜨는데 혹시 이게 while문이 끝남과 동시에 메모리가 자동으로 반납되는 것인지 궁금합니다!
dreamian 6년 전
안녕하세요. 혼자서 도저히 해결할 수 없어서 질문 올리게 되었습니다.
문제를 풀다가 디버깅을 하는 과정에서 scanf가 씹히는 현상을 발견했습니다.
대부분의 인풋 데이터는 잘 돌아가는데, 문자열의 길이가 20이 되는 경우가 연속으로 30개 있을 때 씹히더라구요..
getchar로 버퍼를 없애주거나 fgets를 이용하거나 어떤 방법으로 접근해도 안 되던데 이걸 어떻게 해결할 수 있는 방법이 있을까요?
인풋 데이터는 다음과 같습니다.
30
aaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
baaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
caaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
daaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
eaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
faaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
gaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
haaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
iaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
jaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
kaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
laaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
maaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
naaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
oaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
paaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
qaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
raaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
saaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
taaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
uaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
vaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
waaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
xaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
yaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
zaaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
abaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
bbaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
cbaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
dbaaaaaaaaaaaaaaaaaa jeroenabcdefghijklmn
어떤 점이 문제일까요?ㅠㅠ