void *malloc(size_t size );
malloc 함수는 size만큼의 메모리를 힙 영역에 할당하고 할당한 메모리의 첫 번지를 void 포인터로 반환한다.
int *arScore;
int stNum;
printf("학생수를 입력하세요 : ");
scanf("%d",&stNum);
arScore=(int *)malloc(stNum*sizeof(int));
if (arScore == NULL) {
printf("메모리가 부족합니다.\n");
exit(0);
}
할당은 정수형 포인터에 malloc으로 얻은 void형 포인터를 대입하는 것으로 이루어지기 때문에
해당 포인터의 자료형대로 캐스팅을 해줘야 한다. 할당할 메모리가 부족해서 할당에 실패하면 NULL을 반환한다.
void free(void *memblock );
할당하고 사용 후에는 메모리를 다른 용도로 사용할 수 있게 해제 해야 한다.
매개변수로 해제할 메모리의 시작 번지를 입력하면 된다.
void *calloc( size_t num, size_t size );
calloc은 size만큼의 메모리를 num개만큼 할당받을 수 있다. 결과적으로 size*num만큼의 메모리를
할당하므로 두 매개변수의 순서가 바뀌어도 상관없다. 할당 후에 쓰레기 값으로 채워져있는 메모리가 0으로 초기화된다.
void *realloc( void *memblock, size_t size );
재할당할 메모리 시작 번지와 size를 지정하면 이미 할당되어있던 메모리의 크기를 변경할 수 있다.
memblock이 NULL이라면 malloc과 기능이 같아지고 size가 NULL이라면 free와 기능이 같아진다.
size_t _msize(void *memblock);
위 함수로 실행중에 memblock에 할당된 메모리의 크기를 알 수 있다.
'C++' 카테고리의 다른 글
| [C++] 다차원배열 (0) | 2022.01.02 |
|---|---|
| [C++] 이중 포인터 (0) | 2022.01.02 |
| [C++] 정수형 포인터와 void형 포인터 (0) | 2022.01.01 |
| [C++] 비트 연산자, 쉬프트 연산자 (0) | 2022.01.01 |
| [C++] cin,cout,endl 계산속도 올리기(시간 초과 해결) (0) | 2021.12.28 |