Reputation: 2373
After I call getpwuid(uid)
, I have a reference to a pointer. Should I free that pointer when I don't use it anymore? Reading the man pages, it says that it makes reference to some static area, that may be overwritten by subsequent calls to the same functions, so I'm not sure if I should touch that memory area.
Thanks.
Upvotes: 9
Views: 3063
Reputation: 4373
Use the *_r
functions (getpwuid_r()
) for thread-safe (reentrant) functions that allow you to supply the buffer space to place the returned information in. Be sure check errno for success or failure. If you do not use reentrant functions you can safely assume that the function returns data that does not need to be freed, but will also be overwritten by successive calls to the same function.
Upvotes: 5
Reputation: 42488
No. You do not need to free the result. You can only call free(3) on pointers allocated on the heap with malloc(3), calloc(3) or realloc(3).
Static data is part of a program's data or bss segments and will persist until the process exits (or is overwritten by exec(2)).
Upvotes: 12
Reputation: 6028
Actually it returns a pointer to an already existing structure, so you should not free it.
Upvotes: 1