자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)

Slides:



Advertisements
Similar presentations
구조체 : Structure 와 포인터 2. 집합적 변수 생성 가능 structure_declaration ::= struct_specifier declarator_list ; struct_specifier ::= struct tag_name | struct tag_name.
Advertisements

Kim Yeon Hee 8장. 상속과 다형성 Kim Yeon Hee.
Chapter 02. C언어 기반의 C++ 박 종 혁 교수 UCS Lab SeoulTech Tel:
Basic of Buffer Over Flow
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
명품 C++ 4장. 객체 포인터와 객체 배열, 객체의 동적 생성.
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
제 2 장 배열과 스트링.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Department of Computer Engineering
공학기초설계 Youn-Hee Han 강의 소개 & MinGW & gcc 공학기초설계 Youn-Hee Han
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
C++ Espresso 제9장 다형성.
C언어: 배열 (Arrays).
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
head data link data link data link NULL a b c
버퍼 오버플로우 시스템보안 류기환 권재홍.
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
10장 메모리 관리.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
Department of Computer Engineering
25장. 메모리 관리와 동적 할당.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
3장. 포인터, 배열, 구조체 포인터, 배열, 구조체 학습목표 기본적 데이터 타입
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
C ++ 프로그래밍 시작.
Term Project Team Member
Linux/UNIX Programming APUE (Process Environment)
프로그래밍2 및 실습 C언어 기반의 C++ 2.
스택(Stack) 김진수
임베디드 소프트웨어 설계.
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
Rhapsody + MFC 개발 가이드.
Chapter 3 클래스. 최호성.
13. 포인터와 배열! 함께 이해하기.
가상함수와 추상 클래스.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
Chapter 1 C와는 다른 C++. 최호성.
운영체제 (Operating Systems) (Memory Management Strategies)
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 4 변수 및 바인딩.
2 배열과 구조.
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
5. 논리적 자료표현 : 구조체.
Department of Computer Engineering
18장. 다차원 배열 그리고 포인터.
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
4. 시간의 표현 (6장. 시간의 표현).
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
Windows System Programming
17장. 포인터의 포인터.
C.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
C++ 언어의 특징
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
배열, 포인터, 함수 Review & 과제 1, 2.
11장. 1차원 배열.
Presentation transcript:

자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스) - 2회 차: 메모리 구조와 할당 (메모리 구조, 배열, 동적할당) 발표자: SGA 15기 남궁곤

메모리 구조 정리 (Memory Structure) 32bit 운영체제 2Gbyte 공간 설정 4Gbyte 공간 설정 자료구조 세미나: 자료구조의 기초 (2) _메모리 구조와 할당 메모리 구조 정리 (Memory Structure) 32bit 운영체제 0xFFFF FFFF 0xFFFF FFFF 2Gbyte 공간 설정 (약 21억 개의 주소 공간) 운영체제를 위해 예약 4Gbyte 공간 설정 (약 43억 개의 주소 공간) 0x8000 0000 0x8000 0000 2Gbyte 공간 설정 (약 21억 개의 주소 공간) 어플리케이션을 위한 공간 0x0000 0000 0x0000 0000 SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

비 초기화 데이터 영역 (block started by symbol) 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 상위 메모리 주소 (0xFFFF) env / argv 문자열 env / argv 포인터 환경 변수와 명령 창의 데이터 저장 argc Stack Area 로컬 인자와 프로세스 상태 저장 (약 1MB 사용 가능하며, 컴파일러 옵션으로 변경이 가능) Heap Area 동적으로 할당된 데이터 저장 Data (.bss) 비 초기화 데이터 영역 (block started by symbol) Data Area (.data) 데이터 영역 Code (.text) Text segment 하위 메모리 주소 (0x0000) SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

env / argv 문자열 env / argv 포인터 argc Stack Area Heap Area 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 #include <iostream> int x = 1; int y; void main(void) { int i; static int k; static int l = 1; char szBuff[256]; char *p = new char[10]; y = 2; } 상위 메모리 주소 (0xFFFF) env / argv 문자열 할당되는 영역 env / argv 포인터 data (.data) data (.bss) argc Stack Area stack Heap Area data (.bss) data (.data) stack Data Area (.bss) heap Data Area (.data) text Code (.text) 하위 메모리 주소 (0x0000) SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

할당과 바인딩 (Allocation / Binding) 공간을 요구하는 것을 할당 (Allocation) 이라 하며 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 할당과 바인딩 (Allocation / Binding) 공간을 요구하는 것을 할당 (Allocation) 이라 하며 공간에 요소를 지정하는 것을 바인딩 (Binding) 이라고 한다 Compile Time Static Binding - 바인딩이 Compile, Link, Load 시간에 이루어짐 Run Time Dynamic Binding - 바인딩이 프로그램 실행 중 그 순간의 상태에 따라 이루어짐 SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“연속된 공간이 할당 되며 인덱스(index)를 통해 개별 접근이 가능” 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 배열 이란? (Array) “동일한 성격의 데이터를 관리하기 쉽도록 하나의 이름으로 묶는 일” Array[0]; Array[1]; Array[2]; Array[3]; Array[4]; Array[5]; Array[6]; Array[7]; int Array[8]; int int int int int int int int “연속된 공간이 할당 되며 인덱스(index)를 통해 개별 접근이 가능” Caution! 1. 배열의 길이 선언은 Only!!! 상수 2. 배열의 index는 0부터 시작 3. 한번 선언된 배열의 길이는 변경이 불가능 SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“메모리 구조상에는 일렬로 할당된다.” 1차원 배열 int Array[10]; 2차원 배열 int Array[2][10]; 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 1차원 배열 Array int Array[10]; 2차원 배열 Array[0] int Array[2][10]; Array[1] 3차원 배열 Array[0] int Array[2][2][10]; Array[1] 4차원 배열 int Array[10][10][10][10]; Array[0] . Array[1] . . . “메모리 구조상에는 일렬로 할당된다.” SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“포인터와 배열의 ‘거의’ 유사한 성격을 가지고 있다.’ 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 배열과 포인트 (Array / Pointer) “포인터와 배열의 ‘거의’ 유사한 성격을 가지고 있다.’ 배열 명 포인터 이름 존재 이름이 존재 이름이 존재 값 메모리의 주소 메모리의 주소 변수 여부 상수 변수 “배열 명은 상수이기 때문에 수식의 좌변에 올 수 없고, 값의 대입이 불가능” SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“Array[i] == *(Array + i).’ 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 “Array[i] == *(Array + i).’ “배열과 포인터는 위의 것만 이해하면 끝’ SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“포인터 배열과 다중 포인터” - 포인터를 요소로 가지고 있는 배열 “char (*Array) [4] 의 의미” 자료형 포인터 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 “포인터 배열과 다중 포인터” - 포인터를 요소로 가지고 있는 배열 “char (*Array) [4] 의 의미” 자료형 포인터 연산단위 void main(void) { int array[2][4] = {1, 2, 3, 4, 5, 6, 7, 8}; func1(array); } void func1(int (*ptr)[4]) for (int I = 0 ; I < 2 ; i++) for (int j = 0 ; j < 4 ; j++) cout << ptr[i][j]; cout << endl; -> int ptr[][4] 와 같이 선언해도 동일하다 SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“Heap의 메모리 할당 및 소멸, Run-Time에 메모리 할당하기’ 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 동적 할당 (Dynamic Allocation) “Heap의 메모리 할당 및 소멸, Run-Time에 메모리 할당하기’ ‘C’ Style! ‘C++’ Style! void main(void) { len = 10; char *str = (char*)malloc(sizeof(char * len) free(str); } void main(void) { len = 10; char *str = new char[len] delete []str; } - 할당할 대상의 정보를 무조건 바이트 크기단위로 전달 - 그냥 배열과 유사하게 선언 반환형이 void 포인터 형이기 때문에 적당한 형으로 형변환이 필요 SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771

“C++에서는 C++ style로 동적할당 하자!“ “C++에서 malloc / free 함수의 호출이 문제가 될 수도 있다. 자료구조 세미나: 자료구조의 기초 (2) __메모리 구조와 할당 “C++에서는 C++ style로 동적할당 하자!“ “C++에서 malloc / free 함수의 호출이 문제가 될 수도 있다. 그리고 어렵다…” 할당 소멸 int 형 변수 int *ptr = new int; delete ptr; double 형 변수 double *ptr = new int; delete ptr; 길이가 5인 int 형 배열 int *arr = new int[3] delete []arr; 길이가 10인 double 형 배열 double *arr = new double[7] delete []arr; SGA (Seoul Game Academy) Program-15th Seminar NamgungGon_a.k.a torch: email: gonii78@gmail.com mobile: 010-9959-9771