process 관련 설명: https://chan4im.tistory.com/33
this->OS.code(2)
OS Architecture: monolithic kernel과 micro kernel 두 종류가 있다. monolithic kernel micro kernel 단일체(monolithic)여서 OS 실행속도가 빠르다. 또한 Kernel 내부에 구현되어 있어서 내부함수로 call이 진행된다. 예: UNIX
chan4im.tistory.com
※ 프로세스 (process)
실행되는 프로그램으로 메모리가 할당된다.
Ex. Stack 과정
§ 왜? heap 영역을 사용하게 된 것일까?
※ malloc, calloc, realloc / free(ptr)
heap영역에 할당해야 하므로 포인터에 대한 연산으로 진행하는 경우가 대부분이다.
malloc: 인자가 1개이다. (memory allocation의 줄임말)
int **arr;
int X, Y;
arr = (int**) malloc (sizeof(int*) * Y);
for(int i = 0; i < Y; i++){
arr[i] = (int*) malloc(sizeof(int) * X);
}
for(int i=0; i < Y; i++){
free(arr[i]);
}
free(arr);
calloc: 인자가 2개이다. (clear allocation의 줄임말로 할당된 메모리가 0으로 초기화된다.)
int **arr;
int X, Y;
arr = (int**) calloc (sizeof(int*), Y);
for(int i = 0; i < Y; i++){
arr[i] = (int*) calloc(sizeof(int), X);
}
for(int i=0; i < Y; i++){
free(arr[i]);
}
free(arr);
realloc: 인자가 2개이다. (re allocation의 줄임마로 포인터의 크기를 재조절한다.)
int *ptr = (int*) malloc (sizeof(int) * 4);
for (int i = 0; i < 4; i++) {
ptr[i] = i+1;
}
ptr = (int*)(realloc(ptr, 6 * sizeof(int)));
ptr[4] = 4;
ptr[5] = 5;
[할당 과정 설명]
'C | C++ > C언어' 카테고리의 다른 글
this.Code(8)_ 함수포인터와 void포인터, main(int argc, char* argv[]) (0) | 2022.11.06 |
---|---|
this.Code(7)_ 구조체(struct)와 공용체(union), 열거형(enum) (0) | 2022.11.06 |
this.Code(5)_ 포인터배열 & 배열의 포인터, 배열기반 포인터, 포인터의 포인터 응용 (0) | 2022.11.06 |
this.Code(4)_ 문자열 표현, Call-by-Value(함수인자 전달), 포인터와 상수화 ★★★★★ (0) | 2022.11.06 |
this.Code(3)_ 배열과 포인터, 포인터에 의한 간접접근과 직접접근 (2) | 2022.11.06 |