저장 클래스는 객체 지향 프로그래밍에서 객체를 생성할 때 그 객체가 어떤 메모리 영역에서 살아남을지를 결정하는 방식
스코프는 하나의 변환 단위(파일) 내에서 변수나 함수의 유효 범위를 나타내는 개념
연결은 다른 스코프에 속하는 변수들을 서로 연결하는 것을 의미한다
ㄱ. 무연결 : 지역 변수가 가지는 특징이다 함수 영역인 block scope 내에 선언되어 있음
ㄴ. 내부 연결 : 하나의 파일에서만 사용 가능함
ㄷ. 외부 연결 : 여러 파일에서 사용 가능함
자동 변수
블록 내에서 선언된 변수를 의미하며
블록의 실행이 끝나면 메모리에서 사라짐
레지스터 변수
CPU 레지스터에 저장되어 신속하게 접근 가능함
레지스터에 저장할 수 있는 조건이 매우 제한적이기 때문에 자동 변수로 보내는 경우 있음
정적 변수
프로그램이 실행되는 동안 유지되는 변수를 의미함
메모리의 할당
데이터 영역과 스택 영역에 할당되는 메모리의 크기는 컴파일하는 시간에 정해지지만 힙 영역만큼은 사용자가 직접 결정하며 이것을 동적 할당이라고 함
다른 언어와 달리 c언어는 일부 메모리에 대해서 사용자가 직접 설정할 수 있다는 특징이 있다.
이러한 동적 할당을 하는 함수가 malloc()과 free()이다.
#include <stdio.h>
void* malloc(size_t size)
1. argument인 size_t는 해당 시스템에서 표현할 수 있는 최대 크기의 데이터를 나타내는 자료형이며 unsigned int 자료형과 같은 표현이다.
2. 반환형인 void*은 예약된 공간에 대한 포인터를 반환한다.
차이가 있다면 malloc()은 힙 메모리의 동적 할당을, free()은 메모리를 해제시켜준다
'programming language > C' 카테고리의 다른 글
[C언어] 14강 구조체 (0) | 2023.02.26 |
---|---|
[C언어] 13강 파일 입출력 (0) | 2023.02.22 |
[C언어] 11강 문자열과 문자 I/O 함수 (0) | 2023.02.17 |
[C언어]10강 포인터와 배열 (0) | 2023.02.10 |
[C언어] 9강 함수 (0) | 2023.02.10 |
댓글