자료구조란
데이터간의 관계도를 형상화해서 효율적으로 사용할 수 있도록 구조화한 것.
자료형, 배열, 변수 등이 해당된다. 데이터의 범위와 형태를 결정하여 최적화된 메모리 공간을 만들겠다는 거다. 그래서 자료형 또한 자료구조에 포함된다.
자료구조의 종류
- 단순구조 -> 정수/실수/문자
- 선형구조(1:1관계) -> 스택/큐/리스트(배열, 연결리스트)
- 비선형구조(1:다多) -> 트리/그래프
자료구조와 알고리즘의 관계
프로그램이란 데이터를 표현하고 그렇게 표현된 데이터를 처리하는 것 => 알고리즘은 자료구조에 의존적이다.
최적 알고리즘 -> 시간복잡도와 공간복잡도를 고려.
메모리구조
- code 영역
- 기계어로 번역된 코드가 저장되는 영역
- 함수가 정의된 영역 … (함수의 주소값을 저장하는게 함수포인터)
2.data 영역
- 전역변수 및 static 변수가 저장되는 영역 c++이나 자바 넘어가야 스태틱을 배움
- 정적메모리 영역
- 프로그램이 실행할 때 공간이 생성되고 프로그램이 끝날 때 공간이 소멸되는 영역
- 공간의 생성 및 소멸시기를 결정할 수 없다.
3.stack 영역
- 매개변수 및 지역변수가 저장되는 영역
- 함수의 호출 및 종료를 담당하고 있는 영역
- 지역이 실행할 때 공간이 생성되고 지역이 끝날 때 공간이 소멸하는 영역
4.heap 영역
- 프로그램 실행 중에 사용자 필요에 의해 공간이 생성하고 소멸시키는 작업 … (동적할당)
- 동적할당은 C표준함수를 이용한다.
- 동적 할당된 공간은 우리가 포인터를 통하여 접근 및 제어를 해야한다. (포인터를 통해서 heap 영역에 접근할 수 밖에 없다. 표준함수의 반환값 자체가 주소값이다. 우리는 사실 선택사항이 없다. )
- 동적할당된 공간은 다 사용한 후에는 반드시 해제 처리를 해주어야 한다. (사전예약하는 이유가 서버에 접속하는 사람들 수를 알아내려고)
visual studio
- 2017~ -> SDL등장. _s 같은 것들은 c표준협회에서 만든게 아닌 ms에서 만든 것
- 2012~2015 -> _s 선택적으로 써라.
- ~2010 -> 버퍼오버플로우 문제 발생
C++이 c보다 에러감지를 더 쉽게 해놨다.
공유폴더 들어가는 방법은 window + R
참고자료
kg아이티뱅크학원 (자료구조 수업)