programing

realoc() 전에 malloc()이 필요합니까?

lovejava 2023. 9. 11. 21:19

realoc() 전에 malloc()이 필요합니까?

포인터가 정적이거나 글로벌이거나 자동인 경우 NULL로 명시적으로 설정된 경우 realoc이 malloc으로 작동한다는 것을 읽었기 때문에 포인터가 0인 경우 malloc()을 사용하지 않고 사용하고 있었습니다.

하지만 많은 프로그래머들이 malloc(1)로 설정하거나 설정하려고 시도하는 것을 알 수 있습니다.필요하신가요?

오픈 그룹의 사양에서:

ptr이 null 포인터인 경우 realoc()은 지정된 크기에 대해 malloc()와 같아야 합니다.

ptr이 calloc(), malloc() 또는 realoc()에 의해 이전에 반환된 포인터와 일치하지 않거나 free() 또는 realoc()에 대한 호출로 공간이 이전에 할당 해제된 경우 동작이 정의되지 않습니다.

malloc필요하지 않습니다. 를 사용할 수 있습니다.realloc오직.

malloc(n)와 동치입니다.realloc(NULL, n).

그러나 종종 사용하는 것이 더 명확합니다.malloc의 특수한 의미론 대신에realloc. 그것은 무엇이 작동하는지의 문제가 아니라, 코드를 읽는 사람들을 혼란스럽게 하지 않습니다.

(편집: 에 대한 언급 삭제realloc의 역할을 하는free, 표준 C가 아니기 때문에.댓글참조)

언급URL : https://stackoverflow.com/questions/4459275/is-a-malloc-needed-before-a-realloc