자료구조(1)_메모리구조

자료구조란

데이터간의 관계도를 형상화해서 효율적으로 사용할 수 있도록 구조화한 것.

자료형, 배열, 변수 등이 해당된다. 데이터의 범위와 형태를 결정하여 최적화된 메모리 공간을 만들겠다는 거다. 그래서 자료형 또한 자료구조에 포함된다.

자료구조의 종류
  • 단순구조 -> 정수/실수/문자
  • 선형구조(1: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아이티뱅크학원 (자료구조 수업)

0%