int len; scanf("%d", &len); int arr[len]; ... 이렇게 하니까 정상적으로 돌아가고 배열 사이즈도 len만큼 잘 들어가던데 일단 free(arr); 하면 에러나는거 봐선 동적 메모리 할당은 아닌가 싶기도 하고 .근데 런타임에 길이가 결정돠는데 정적할당운 또 말이 안 되고 어케 되는건가여? - dc official App
저게 됨? ㄷㄷ
ㅇㅇㅇㅇ 저거 되더라고.. - dc App
vs에선 안지원하는구나, 그래서 맨날 안됐노
gcc. ㄱㄱ - dc App
그낭 vector쓸래
상남자는 stl같은거 없이 오리지날 c다 - dc App
동적할당 맞긴 함. 근데 free를 하는게 아니라 스코프 벗어날때 자동으로 해제됨
https://en.wikipedia.org/wiki/Variable-length_array
그럼 main에다 바로 저렇게 선언 해놓으면 걍 프로그램 돌아가는 내내 회수 안되는거네 - dc App
ㅇㅇ 그렇지. 근데 접근 안하면 컴파일러가 그 시점에 해제코드 넣을수도 있어서 잘 모르겠다
아 해제코드 있는것 같아. 내가 free하면 이중 free오류 뜨더라거.... 컴파일러가 해주나봐 - dc App
그거랑은 상관없음. 저 메모리가 malloc을 통해서 할당 된다는 보장이 없음
어셈까보면 나오려나 - dc App
그리고 링크에 있는게 길이가 함수 parameter로 와야되는거라 님 경우에도 해당되는건지는 잘 모르겠음
이런거보면 컴파일러야말로 AI가 아닌가싶음 ㄷㄷ
결론은 저게 C 표준인지 아닌지는 나도 잘 모르겠다
표준문법은 아니라 지양하는 게 좋음