Computer_Language/C 3

[C] C언어의 Stack_Frame

오늘은 스택 프레임에 대해 공부했다. 사실 이해하는데 정말 많은 시간이 걸렸는데 막상 공부하고 보니 그렇게 어려운 개념은 아닌 것 같다. 시작하기 전에.. 비주얼 스튜디오 2019를 통해 결과를 확인해보려 했는데, 디버그 옵션도 변경하고, 최적화 설정도 "사용 안 함"으로 바꿔줬는데 스택과 스택 사이에 예상하지 못한(?) 값이 계속 들어가서 아직도 실습을 못해보고 있다..ㅜ 제대로 된 설정을 찾게 되면 꼭 직접 테스트해보고 싶다. 아니면 우분투에서 GDB를 써서라도 꼭 확인해 볼 것이다. 스택 프레임 스택 프레임을 한 줄로 요약하자면, "함수 a가 호출되었을 때 그 함수가 가지는 공간(공간의 구조)"이다. 스택 영역을 함수가 어떻게 사용하는지 천천히 공부해보자. #include void func_a() ..

Computer_Language/C 2019.10.15

[C] 인덱스 검사(경계 검사)에 대하여

오늘은 인덱스 검사에 대해 공부를 했다. 많은 사람들이 경계 검사와 인덱스 검사를 혼용해서 사용하는데, 엄밀히 따지면 경계 검사가 더 포괄적인 단어이다. (통상적으로는 경계 검사를 인덱스 검사라고 부른다고 한다 - 참고) 오늘 공부한 내용은 경계 검사 중 인덱스 검사에 대해 공부를 했다. 인덱스 검사란 접근할 배열의 인덱스가 정의했던 경계 안에 존재하는지 확인하는 검사이다. C언어는 빠른 실행 속도를 위해 경계 검사를 자동으로 수행하지 않는다. 컴퓨터 언어를 공부한 지 1년 반만에 알았지만 중요한 개념이니 제대로 정리를 해보자. 프로그래밍을 글로 배우기는 쉽지 않으니 적절한 예시를 만들어보았다. #include int main() { int i, a[40]; for (i = 0; i < 40; i++) ..

Computer_Language/C 2019.08.31

[C] 위치를 기록하는 동안 액세스 위반이 발생했습니다. 에 관하여

C는 내가 처음으로 공부했던 컴퓨터 언어이다. 백준 문제도 많이 풀어보고, 게임을 만들거나 자료구조를 시각화하는 등 다양하게 코딩을 했던 것 같다. 오늘은 처음으로 C에 대해서 깊게 공부하게 되었던 "액세스 위반"에 대해 정리를 해보려고 한다. 1. 어떤 경우에 위반이 떴나? 내가 경험했던 경우는 두 가지이다. 1. 메모리 할당이 되지 않은 포인터를 잘못 사용할 경우. 2. 읽기 전용 메모리에 쓰기를 수행할 경우. 1번의 경우는 "할당되지 않은 메모리를 사용하려고 할 때"라고 표현해도 좋을 것 같다. 2. 직접 액세스 위반을 발생시켜보며 공부하자 먼저 "1. 메모리 할당이 되지 않은 포인터를 잘못 사용할 경우."에 대해 공부해보았다. 예제 1-1) 정상적인 오류가 없는 정상적인 코드이다. #include..

Computer_Language/C 2019.08.27