반응형
* 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 바로 뒤에 있어야 한다.
반응형
'Basic > C++' 카테고리의 다른 글
class 기본 예제 및 내부 및 외부접근 코드 (0) | 2015.10.06 |
---|---|
클래스에 들어가기전, 구조체의 필요성 (0) | 2015.10.06 |
레퍼런스 심화 (0) | 2015.10.03 |
레퍼런스 함수 (포인터와 참조의 비교) (0) | 2015.10.03 |
레퍼런스의 이해 (0) | 2015.10.03 |