반응형

* malloc와 free의 상위 호환 함수 *


1. int *ptr = new int [10];


2. int *ptrAlloc = (int *)malloc(sizeof(int)*10);


1과 2는 사용할 수 있는 메모리가 충분하지 않을때 할당에 실패하고 그때 NULL이 리턴되는것은 같다.


하지만 2번보다 1번을 이용하게되면 조금더 간편하게 메모리 할당을 받을 수 있는 용이성이 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(void)
{
 
 int *val = (int*)malloc(sizeof(int));
 int *arr = (int*)malloc(sizeof(int)*size);
 
 free(val);
 free(arr);
 
 return 0;
}
 
//(int*)같은 형번환도 안해도되고
//sizeof(int)*size처럼 크기도 할당 안해줘도 자동 할당한다.
 
Crocus

 

1
2
3
4
5
6
7
8
9
10
11
12
13
 
int main(void)
{
 
 int *val = new int// 알아서 int형으로 형변환 해준다.
 int *arr = new int[size]; // 알아서 배열의 크기만큼 할당 해 준다.
 
 delete val;
 delete []arr;
 
 return 0;
 
}
Crocus



 

주의 해야될 것은 delete를 할때는 변수는 그냥 하면 되는데


배열일 경우에는 항상 인덱스 연산자를 이용하여 배열임을 명시해 주어야 한다. 


그리고 배열일때 delete는 delete [] arr; 이런식으로 []이 delete 바로 뒤에 있어야 한다.

반응형