MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT(3)
π NAME π
memcached_set_memory_allocators_context β it's from the libmemcached Documentation bestie, and it's all about managing memory allocator functions. yes queen, we're doing malloc now π
β¨ SYNOPSIS β¨
okay so first things first, you gotta include the header and link the lib:
#include <libmemcached/memcached.h>
Compile and link with -lmemcached
π Setting your own allocators
memcached_return_t memcached_set_memory_allocators(memcached_st *ptr,
memcached_malloc_fn mem_malloc, memcached_free_fn mem_free,
memcached_realloc_fn mem_realloc, memcached_calloc_fn mem_calloc, void
*context)
Parameters π«Ά
ptrβ pointer to an initializedmemcached_ststructmem_mallocβ pointer to amemcached_malloc_fncallbackmem_freeβ pointer to amemcached_free_fncallbackmem_reallocβ pointer to amemcached_realloc_fncallbackmem_callocβ pointer to amemcached_calloc_fncallbackcontextβ pointer to a user supplied context
Returns πΈ memcached_return_t indicating success
π¦ Getting them back out
void memcached_get_memory_allocators(memcached_st *ptr,
memcached_malloc_fn *mem_malloc, memcached_free_fn *mem_free,
memcached_realloc_fn *mem_realloc, memcached_calloc_fn *mem_calloc)
Parameters π
ptrβ pointer to an initializedmemcached_ststructmem_mallocβ pointer to store the address of thememcached_malloc_fncallbackmem_freeβ pointer to store the address of thememcached_free_fncallbackmem_reallocβ pointer to store the address of thememcached_realloc_fncallbackmem_callocβ pointer to store the address of thememcached_calloc_fncallback
π§ And the context specifically
void *memcached_get_memory_allocators_context(const memcached_st *ptr)
Parameters
ptrβ pointer to an initializedmemcached_ststruct
Returns pointer to the user supplied context
π₯ The callback typedefs, iconic behavior
typedef void *(*memcached_malloc_fn)(memcached_st *ptr, const size_t
size, void *context)
- Param
ptrβ pointer to an initializedmemcached_ststruct - Param
sizeβ the number of bytes to allocate - Param
contextβ pointer to the user supplied context - Returns β pointer to at least
sizebytes of allocated memory
typedef void *(*memcached_realloc_fn)(memcached_st *ptr, void *mem,
const size_t size, void *context)
- Param
ptrβ pointer to an initializedmemcached_ststruct - Param
memβ pointer to previously allocated memory - Param
sizeβ the number of bytes to allocate - Param
contextβ pointer to the user supplied context - Returns β pointer to at least
sizebytes of allocated memory
typedef void (*memcached_free_fn)(memcached_st *ptr, void *mem, void
*context)
- Param
ptrβ pointer to an initializedmemcached_ststruct - Param
memβ pointer to previously allocated memory - Param
contextβ pointer to the user supplied context
typedef void *(*memcached_calloc_fn)(memcached_st *ptr, size_t nelem,
const size_t elsize, void *context)
- Param
ptrβ pointer to an initializedmemcached_ststruct - Param
nelemβ number of elements to allocate - Param
elsizeβ the number of bytes to allocate per element - Param
contextβ pointer to the user supplied context - Returns β pointer to at least
elsize * nelembytes of allocated and zeroed memory
π DESCRIPTION π
ngl this is the good part. libmemcached lets you specify your own memory allocators, optimized for your application. the whole point is that libmemcached can live inside apps that already have their own malloc implementation β like, it just vibes with your setup instead of fighting it π
memcached_set_memory_allocators() is what you use to set the memory allocators used by the memcached instance specified by ptr.
β οΈ okay bestie, important: you cannot override only one of the memory allocators. you have to specify a complete new set if you want to override one of them. no picking and choosing, that's the rule π
All of the memory allocation functions should behave as specified in the C99 standard. And if you want to reset them back to the defaults? Specify NULL as all functions. poof, defaults restored β¨
memcached_get_memory_allocators() is used to get the currently used memory allocators by a memcached handle.
memcached_get_memory_allocators_context() returns the void * that was passed in during the call to memcached_set_memory_allocators().
The first argument to the memory allocator functions is a pointer to a memcached structure. It is passed as const and you will need to clone it in order to make use of any operation which would modify it. don't fight the const, it's giving boundaries π
π NOTES π
In version 0.38 all functions were modified to have a context void pointer passed to them. This was so that custom allocators could have their own space for memory. slay for custom allocators having room to breathe π«Ά
β RETURN VALUE β
memcached_set_memory_allocators() returns MEMCACHED_SUCCESS upon success, and MEMCACHED_FAILURE if you don't pass a complete set of function pointers. so likeβ¦ pass the whole set, bestie. all four. every time π
π SEE ALSO π
and that's the whole page, no cap πβ¨
this was libmemcached-awesome, page MEMCACHED_S...TORS_CONTEXT(3), version 1.1, dated Jul 24, 2025 β ily, go allocate responsibly ππ¦π
π¦ where this page comes from
- fedora 43: libmemcached-awesome-devel 1.1.4-7.fc43 Β· BSD-3-Clause
- fedora 43: libmemcached-awesome-devel 1.1.4-7.fc43 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms