Is a malloc() needed before a realloc()?

后端 未结 2 904
离开以前
离开以前 2020-12-15 04:15

Since I had read realloc will act as malloc if the size pointed is 0, I was using it without malloc(), provided the pointer was static, global, or explicitly set to NULL if

相关标签:
2条回答
  • 2020-12-15 04:37

    From Open Groups' specifications:

    If ptr is a null pointer, realloc() shall be equivalent to malloc() for the specified size.

    If ptr does not match a pointer returned earlier by calloc(), malloc(), or realloc() or if the space has previously been deallocated by a call to free() or realloc(), the behavior is undefined.

    0 讨论(0)
  • 2020-12-15 04:38

    malloc is not required, you can use realloc only.

    malloc(n) is equivalent to realloc(NULL, n).

    However, it is often clearer to use malloc instead of special semantics of realloc. It's not a matter of what works, but not confusing people reading the code.

    (Edit: removed mention of realloc acting as free, since it's not standard C. See comments.)

    0 讨论(0)
提交回复
热议问题