티스토리 뷰
💥 메모리 영역
1) 코드영역
- 실행할 명령어들이 순서대로 쌓인다. CPU가 이 영역에서 명령어들을 하나씩 가져다 처리한다.
2) 스택영역
- 스택이란 모든 원소들의 삽입, 삭제를 한 쪽 방향에서만 수행하도록 하는 선형 자료구조이다.
- 후입선출방식(Last In First Out)이라고 한다. 나중에 들어온 것이 먼저 빠져나간다는 뜻이다.
3) 힙영역
- 힙은 컴퓨터 메모리의 일부가 할당되었다가 회수되는 일들의 반복이다.
- 힙은 컴파일 시가 아닌 실행 시 사용자로부터 할당 메모리를 입력 받는다.
4) 데이터영역
- 전역변수와 static 변수가 저장되는 메모리 영역이다.
- 이 메모리는 프로그램 종료 시 소멸된다.
💥 동적 메모리 할당 함수의 원형
void*malloc(size_t size);
- 전달인자 size는 바이트 단위로 입력한다.
- 메모리 할당이 되면 메모리의 주소값을 리턴한다.
- 메모리 부족 시 NULL 포인터를 리턴한다.
- void는 타입이 지정되지 않는 포인터를 의미한다.
=> 원하는 메모리 크기만큼 할당해줄테니, 메모리는 너가 원하는 형태로 정해서 사용해!
💥 동적 메모리 할당 실습 해보기
#include <stdio.h>
int main()
{
int num;
int *student;
printf("학생 수를 입력하세요 : ");
scanf("%d", &num);
student = (int*)malloc(sizeof(int) * num);
if(student == NULL){
printf("메모리가 할당되지 않았습니다.\n");
return 0;
}
printf("할당된 메모리 크기는 %d 입니다.\n", sizeof(int)*num);
free(student);
return 0;
}
sizeof(int)는 int의 크기를 나타내기 위함이다.
int의 크기와 학생 수를 곱해 할당된 메모리 크기를 나타낼 수 있게 하였다.
'웹 개발 공부하기' 카테고리의 다른 글
[01.09] 클래스(Class) (0) | 2025.01.12 |
---|---|
[01.09] 객체 지향 프로그래밍 방식 (0) | 2025.01.12 |
[01.09] 공용체, enum (0) | 2025.01.12 |
[01.09] 구조체 (0) | 2025.01.12 |
[01.09] 함수 포인터 (0) | 2025.01.12 |