현재
array_append(arr, elem, esiz)
이렇게 쓰는데
내부에서 esiz만큼 malloc해서 elem을 복사해서 elem을 보관함
즉 elem을 직접 보관하는게 아니라 복사해서 보관
나중에 꺼내쓸때는 array_get을 하면 이 복사된 객체를 가리키는 포인터를 전달
그런데 elem이 구조체같은 객체가 아니라 포인터일 경우
array_append를 써서 보관하면
나중에 array_get하면 포인터의 포인터가 나와서 사용상의 번거로움이 있음
예를들어 문자열 즉 char *를 보관하면 해당 포인터값을 복사해서 저장
이걸 array_get으로 꺼내면 char *이 보관된 장소의 주소값 즉 char **이 나옴
*((char **) array_get(arr, idx))
그래서 이렇게 캐스팅을 해서 써야해서 불편
그래서 그냥 애초에
포인터 저장용 함수를 새로 만들자
array_append_ptr(arr, ptr)
해당 포인터 자체를 그냥 바로 저장한다 (복사를 안함)
현재
array_append(arr, elem, esiz)이렇게 쓰는데
내부에서 esiz만큼 malloc해서 elem을 복사해서 elem을 보관함
즉 elem을 직접 보관하는게 아니라 복사해서 보관
나중에 꺼내쓸때는 array_get을 하면 이 복사된 객체를 가리키는 포인터를 전달
그런데 elem이 구조체같은 객체가 아니라 포인터일 경우
array_append를 써서 보관하면
나중에 array_get하면 포인터의 포인터가 나와서 사용상의 번거로움이 있음
예를들어 문자열 즉 char *를 보관하면 해당 포인터값을 복사해서 저장
이걸 array_get으로 꺼내면 char *이 보관된 장소의 주소값 즉 char **이 나옴
그래서 이렇게 캐스팅을 해서 써야해서 불편
그래서 그냥 애초에
포인터 저장용 함수를 새로 만들자
array_append_ptr(arr, ptr)해당 포인터 자체를 그냥 바로 저장한다 (복사를 안함)