일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 카카오프로젝트100
- numpy
- 카카오프로젝트
- javascript
- 보안뉴스 요약
- ES6
- 자바스크립트 prototype
- 오라클
- python
- 보안뉴스한줄요약
- 파이썬
- 자바스크립트
- php
- 다크웹
- 자바스크립트 기본 문법
- 랜섬웨어
- 자바스크립트 element api
- oracle db
- 깃허브
- 보안뉴스 한줄요약
- 자바스크립트 node
- 자바스크립트 jQuery
- 보안뉴스요약
- 보안뉴스
- oracle
- 카카오프로젝트 100
- GIT
- 자바스크립트 API
- 자바스크립트 객체
- Oracle SQL
- Today
- Total
FU11M00N
C언어 자료형과 메모리의 기본적인 이해 본문
안녕하세요! 이번엔 포인터를 하기 위해 기본적인 개념을 알아보도록 하겠습니다.
구분 | 크기(byte) | 범위 | |
정수형 | char | 1byte | ~128~127 |
short | 2byte | ~32786~32767 | |
int | 4byte | -2.147.483.648 ~ 2.147.483.647 | |
long | 4byte | -2.147.483.648 ~ 2.147.483.647 | |
long long | 8byte | ~9.223.372.036.854.775.808~ 9.223.372.036.854.775.807 |
|
실수형 | float | 4byte | +- 3.4 x 10^-37 ~ +-3.4x10^38 |
double | 8byte | += 1.7 x 10^-307 ~ +- 3.4 x 10^308 | |
long double | 8byte이상 | double 이상 |
(long 형은 32비트 운영체제에서 4 바이트, 64비트 운영체제에서 8 바이트로 동작하기 때문에 다를 수도 있습니다!
하지만 윈도우에서는 32비트든 64비트이든 4byte가 나옵니다.)
다들 C 공부를 하셨었다면 아시겠지만 앞에 나오는 개념 중 하나인,
각 타입들마다 바이트 즉 표현할 수 있는 정도가 다릅니다.
여기서 짚고 가야 할 것은 , 모든 자료형은 각자 일정한 크기를 가질 수 있고 앞서 나가 구조체와 배열도 그러합니다.
위의 표에 있는 자료형들은 변수로 선언되면 메모리에 그 변수에 맞는 크기로 메모리를 사용하게 됩니다.
기본적인 CPU와 램의 동작원리입니다. CPU와 보조기억장치는 바로 데이터 전송이 안되기 때문에
주기억장치인 RAM을 통해서 동작이 됩니다.
사진 1-2는 RAM의 구조입니다. Random access Memory라고도 불리며 기억된 정보를 읽어내기도 하고 다른 정보를 기억시킬 수도 있는역할을 합니다.
1. 스택 영역 (Stack Area)
스택 영역에서는 지역변수와 매개변수가 할당됩니다. 스택에 저장되어있는 것들은
선언되었던 함수를 빠져나가면 소멸이 됩니다.
2. 힙 영역 (Heap Area)
힙 영역에서는 개발자가 메모리를 효율적으로 쓰기 위해 동적으로 데이터를 저장시킬 수 있습니다.
데이터 영역과 스택 영역과는 다르게 메모리를 사용하고 나서 다시 해제를 해야 할 필요가 있기 때문에
free() 함수를 사용하여 메모리 할당을 해제해줍니다!
3. 데이터 영역 (Code Area)
데이터 영역에는 전역 변수와 정적변수로 으로 선언되는 변수들이 할당됩니다.
데이터 영역에는 전역변수와 static으로 선언되는 static 변수가 할당됩니다.
이 영역에 할당되는 변수들은 프로그램의 시작과 동시에 메모리 공간에 할당되어, 프로그램 종료 시까지 남아있게 됩니다.
4. 코드 세그먼트 (Code Segment)
코드 세그먼트 영역은 실행할 프로그램의 코드가 저장되는 메모리 공간입니다.
CPU는 코드 세그먼트 영역에 저장된 명령문들을 하나씩 가져가서 실행을 합니다.
다음에는 C언어에서 각 타입별로 변수들이 어디에 저장되고 크기는 얼마나 차지하는지 알아보도록 하겠습니다!
'Programming > C Language' 카테고리의 다른 글
[C언어] C언어 <stdint.h> 헤더파일 (0) | 2020.04.18 |
---|---|
C언어 함수포인터 (0) | 2020.04.14 |
C언어 포인터 와 배열 이해와 차이점 (0) | 2020.04.14 |
C언어 스택의 기본개념과 재귀함수의 개념 (0) | 2020.04.13 |
C언어 포인터 기본 (0) | 2020.04.10 |