On this page
free_sized
Defined in header <stdlib.h> | 
      ||
|---|---|---|
 | 
      (since C23) | 
Deallocates the space previously allocated by malloc(), calloc(), or realloc() (but not aligned_alloc()).
Parameters
| ptr | - | pointer to the memory to deallocate | 
| size | - | size of memory previously passed to an allocation function | 
Return value
(none)
Notes
Possible implementation
void free_sized(void* ptr, size_t /*size*/)
{
    free(ptr);
}
  Example
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
 
typedef struct
{
    size_t size;     // current number of elements
    size_t capacity; // reserved number of elements
    void** data;
} PtrVector;
 
PtrVector vector_create(size_t initial_capacity)
{
    PtrVector ret =
    {
        .capacity = initial_capacity,
        .data = (void**) malloc(initial_capacity * sizeof(void*))
    };
    return ret;
}
 
void vector_delete(PtrVector* self)
{
    free_sized(self->data, self->capacity * sizeof(void*));
}
 
void vector_push_back(PtrVector* self, void* value)
{
    if (self->size == self->capacity)
    {
        self->capacity *= 2;
        self->data = (void**) realloc(self->data, self->capacity * sizeof(void*));
    }
    self->data[self->size++] = value;
}
 
int main()
{
    int data = 42;
    float pi = 3.141592f;
    PtrVector v = vector_create(8);
    vector_push_back(&v, &data);
    vector_push_back(&v, &pi);
    printf("data[0] = %i\n", *(int*)v.data[0]);
    printf("data[1] = %f\n", *(float*)v.data[1]);
    vector_delete(&v);
}
   Output:
data[0] = 42
data[1] = 3.141592
   References
- C23 standard (ISO/IEC 9899:2023):
 - 7.24.3.4 The free_sized function
 
See also
| deallocates previously allocated memory  (function)  | 
     |
| 
       
        (C23)
         | 
      deallocates previously allocated sized and aligned memory  (function)  | 
     
| allocates memory  (function)  | 
     
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
 https://en.cppreference.com/w/c/memory/free_sized