프로그래밍 언어/C, C++
void 포인터 용법 정리
EastHoon
2021. 8. 26. 15:01
Free void pointer
Q. void *로 참조된 배열 혹은 구조체를 Free 하는 것은 괜찮을까?
A. Malloc과 Free는 항상 void* 를 취하므로 void* 포인터 참조된 것을 해제 하는 것은 자연스러운 일이다.
즉, Free는 void*를 취한다(take).
void ** 사용법
void**는 포인터의 포인터이다. 아래의 예시에 따르면 자료형을 알수 없는(some_type_t) 배열을 참조할 때,
해당 배열을 (void *)로 캐스팅 한 후에, (void **)형인 array로 아래와 같이 접근할 수 있겠다.
some_type_t 배열이 2차원 배열이라면, void** array 를 이용해 행(row) 접근을 한다고 볼 수도 있겠다.
void** array;
int arrayLen = 10;
array = (void**)malloc(arrayLen * sizeof(void*));
some_type_t* some_object_ptr;
// The following two assignment are equivalent since in C,
// array[index] <=> *(array + index)
array[index] = (void*)some_object_ptr;
*(array + index) = (void*)some_object_ptr;
[1] https://stackoverflow.com/questions/2182103/is-it-ok-to-free-void
[2] https://stackoverflow.com/questions/9040818/how-to-use-void-pointer-correctly
[3] https://stackoverflow.com/questions/16124045/pointer-of-void-array/16125517
반응형