저거 gcc 에서 컴파일하면 stack smashing detected 라고 뜨는데
왜 책에는 i가 초기화되서 무한루프로 된다고 되있는거임?
알려줘잉
연속한 메모리공간이라 i가 덮어써져서 그럴수 잇다는가
변수 선언해 줄 때 int a[10], i; 로 선언했잖아. 특정 컴파일러는 이걸 최적화 없이 선언 순서 그대로 할당해서 메모리에서 a[9] 바로 다음에 i 가 있는거. 그래서 a[10]주소가 i 주소랑 같아짐 결국 a[10] = 0 이 i = 0 랑 같아짐
메모리 다음에 i가 있으면 그럴수있다는건 알았는데 랜덤하게 그렇게될줄알앗음 ㅠㅠ. 항상 그렇게 되는 컴파일러가 있나보네 고맙다.
근데 이런건 뭐라 검색해야 관련된걸 알수잇는거야 좀 찾아볼려해도 검색키워드를 모르겟어
검색해서 찾은건 아니고 알고있는 지식 조합함
뭐배우면서 알게됨
걍 c랑 컴파일러 알면 보일듯
연속한 메모리공간이라 i가 덮어써져서 그럴수 잇다는가
변수 선언해 줄 때 int a[10], i; 로 선언했잖아. 특정 컴파일러는 이걸 최적화 없이 선언 순서 그대로 할당해서 메모리에서 a[9] 바로 다음에 i 가 있는거. 그래서 a[10]주소가 i 주소랑 같아짐 결국 a[10] = 0 이 i = 0 랑 같아짐
메모리 다음에 i가 있으면 그럴수있다는건 알았는데 랜덤하게 그렇게될줄알앗음 ㅠㅠ. 항상 그렇게 되는 컴파일러가 있나보네 고맙다.
근데 이런건 뭐라 검색해야 관련된걸 알수잇는거야 좀 찾아볼려해도 검색키워드를 모르겟어
검색해서 찾은건 아니고 알고있는 지식 조합함
뭐배우면서 알게됨
걍 c랑 컴파일러 알면 보일듯