>  this function only frees the content, but don't reset pointers to NULL, so I think it's closer to clear's meaning.

I think this comments contradicts what you just said. `free` means freeing the allocated memory associated to that pointer. `clear` means deleting content.

> free usually means freeing the struct itself.

```c
void *ptr = malloc(100);
free(ptr);  // the ptr itself is still in memory (on the stack here)

struct my_s;
my_s.field = malloc(100);
free_my_struct(&my_s);  // free the .field but the struct itself still remains in memory just like the void pointer in the last example
```