Memory
변수 -> 'memory'의 특정 공간
즉, 식별번호가 필요하다. => memory의 주소
구성요소
이름이 부여된 memory
그 안에 담긴 정보
memory의 주소
memory의 특징
↓
지정 - 직접 : 변수 선언 (memory 확보 - 위치 정보를 알 수 없음 (자동화) -)
간접 : 포인터 (memory 주소를 저장)
Byte order
300 -> 0x0000012c(16) - Big endian
0x2c010000(16) - little endian ( Intel x86 )
Memory 종류
Stack - 자동 / 지역 변수
Heap - 동적 할당
PE file - Text Segment - Machine Code
Data Segment - Read only - 상수 형태의 문자열
- Read / Write - 정적, 전역 변수
ASLR - Address Space Layout Randomization
실행마다 memory 주소를 변경하는 것
메모리 해킹을 막기 위해서 도입
Pointer
Pointer 변수 - Memory의 주소를 저장하기 위한 변수
주소 연산자(&) - Memory의 실제 주소를 알려주는 연산자 (변수를 주소로)
간접 지정 연산자(*) - 변수의 내용을 memory의 주소로 계산하게 하는 연산자 (주소를 변수로)
Pointer & Array
배열 이름 : 배열의 기준 요소(가장 앞 요소)의 기준 주소
- 주소이므로 Pointer 변수에 저장할 수 있다.
paData + 1 은 paData안에 들어있는 aList의 주소값에 1을 더하는게 아니라 aList[1]의 주소를 나타낸다.
즉, aList의 2번째 요소의 기준 주소를 나타내는 것이다.
주소계산
기준을 정하고, offset을 이용해 '상대적'으로 계산한다.
- 기준요소는 기준을 중심으로 '0'만큼 떨어져 있다.
- Zerobased index 라고 한다.
Pointer는 어떤 기준을 잡기 위해 사용한다.
- 출처 : 독하게 시작하는 C 프로그래밍 (최호성, 루비 페이퍼)
'Programming > C language' 카테고리의 다른 글
chapter 11. 메모리와 포인터 (내용요약 - 3) (0) | 2017.06.29 |
---|---|
chapter 11. 메모리와 포인터 (내용요약 - 2) (0) | 2017.06.28 |
Chapter 10. 함수에 대한 기본 이론 (문제 풀이) (0) | 2017.03.22 |
Chapter 10. 함수에 대한 기본 이론 (내용 요약) (0) | 2017.03.21 |
Chapter 09. 배열을 활용한 프로그래밍 기법 (문제 풀이) (0) | 2017.03.16 |