본문 바로가기
programming language/C

[C언어]12강 기억 클래스, 연결, 메모리 관리

by Peter Choi 2023. 2. 17.
반응형

 

 

저장 클래스는 객체 지향 프로그래밍에서 객체를 생성할 때 그 객체가 어떤 메모리 영역에서 살아남을지를 결정하는 방식

 

스코프는 하나의 변환 단위(파일) 내에서 변수나 함수의 유효 범위를 나타내는 개념

 

연결은 다른 스코프에 속하는 변수들을 서로 연결하는 것을 의미한다

 

ㄱ. 무연결 : 지역 변수가 가지는 특징이다 함수 영역인 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

댓글