HASHKIT_FREE(3)

πŸ’– HASHKIT_FREE(3) πŸ’–

okay bestie, this page lives in the libmemcached-awesome manual, and it's literally the whole libhashkit documentation you need to know about making and destroying hashkit objects. it's giving "housekeeping but make it cute" ✨


🌸 NAME 🌸

hashkit_free β€” libhashkit Documentation


πŸŽ€ SYNOPSIS πŸŽ€

#include <libhashkit-1.0/hashkit.h>
       Compile and link with -lhashkit

typedef struct hashkit_st hashkit_st

hashkit_st *hashkit_create(hashkit_st *hash)

       Parameters
              hash -- memory address of a hashkit_st struct; if a
              nullptr is passed, the struct will be dynamically
              allocated by libhashkit

       Returns
              pointer to initialized hashkit_st structure

hashkit_st *hashkit_clone(hashkit_st *destination, const hashkit_st
*ptr)

       Parameters

              β€’ destination -- memory address of a hashkit_st struct; if
                a nullptr is passed, the struct will be dynamically
                allocated by libhashkit

              β€’ ptr -- pointer of the hashkit_st struct to copy

       Returns
              pointer to a hashkit_st structure (destination, if not
              nullptr), initialized from ptr

void hashkit_free(hashkit_st *hash)

       Parameters
              hash -- pointer to an initialized hashkit_st struct

bool hashkit_is_allocated(const hashkit_st *hash)

       Parameters
              hash -- pointer to an initialized hashkit_st struct

       Returns
              bool, whether the hash struct was dynamically allocated

so yes, you compile and link with -lhashkit, and the whole cast is:

  • hashkit_create(hashkit_st *hash) β€” the constructor bestie 🫢
    • hash β€” memory address of a hashkit_st struct; if a nullptr is passed, the struct will be dynamically allocated by libhashkit
    • returns: pointer to initialized hashkit_st structure
  • hashkit_clone(hashkit_st *destination, const hashkit_st *ptr) β€” the copycat πŸ’…
    • destination β€” memory address of a hashkit_st struct; if a nullptr is passed, the struct will be dynamically allocated by libhashkit
    • ptr β€” pointer of the hashkit_st struct to copy
    • returns: pointer to a hashkit_st structure (destination, if not nullptr), initialized from ptr
  • void hashkit_free(hashkit_st *hash) β€” the cleanup, we love a tidy queen 🧹
    • hash β€” pointer to an initialized hashkit_st struct
  • bool hashkit_is_allocated(const hashkit_st *hash) β€” the vibe check on who owns the memory πŸ‘‘
    • hash β€” pointer to an initialized hashkit_st struct
    • returns: bool, whether the hash struct was dynamically allocated

✨ DESCRIPTION ✨

so hashkit_create() initializes a hashkit object for use. if you pass a nullptr argument for hash, then the memory for the object is allocated. if you specify a pre-allocated piece of memory, that is initialized for use. either way, she's ready πŸ’–

the hashkit_clone() function initializes a hashkit object much like hashkit_create(), but instead of using default settings it will use the settings of the ptr hashkit object. not me copy-pasting my whole personality onto a new struct 😭

the hashkit_free() frees any resources being consumed by the hashkit objects that were initialized with hashkit_create() or hashkit_clone(). this is the part where you actually let go. main character energy is knowing when to release πŸ”₯

the hashkit_is_allocated() reports whether the memory was allocated for a hashkit object. fr fr, sometimes you gotta ask "is this mine or did the library make it".


⭐ RETURN VALUE ⭐

hashkit_create() and hashkit_clone() will return nullptr on failure or pointer to hashkit_st on success. no in-between, no maybes.

hashkit_is_allocated() returns true if the memory for the hashkit object was allocated inside of hashkit_create() or hashkit_clone(), otherwise it is false and was user-supplied memory. that's it, that's the whole test 🌈


πŸ¦‹ SEE ALSO πŸ¦‹

iykyk, go read those next bestie πŸ’œ


πŸ’€ quick reminder that hashkit_is_allocated() returning false means that memory was user-supplied, so don't go freeing things you didn't allocate. the audacity would be unmatched.

and that's the page, periodt. this was libmemcached-awesome, version 1.1, dated Jul 24, 2025 β€” mwah, iconic, no cap πŸŽ€βœ¨πŸ«Ά

πŸ“¦ where this page comes from