Skip to content

array_append_ptr 추가 #78

@logic-finder

Description

@logic-finder

현재
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)
해당 포인터 자체를 그냥 바로 저장한다 (복사를 안함)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions