Search code examples
cfreemalloc

Freeing all malloc()-created pointers with one command?


Is there a one-liner that will free the memory that is being taken by all pointers you created using mallocs? Or can this only be done manually by freeing every pointer separately?


Solution

  • you could do that by creating some kind of "wrapper" around malloc. (warning that's only pseudo code showing the idea, there is no checking at all)

    void* your_malloc(size_t size)
    {
        void* ptr = malloc(size);
    
        // add ptr to a list of allocated ptrs here
    
        return ptr;
    }
    
    void your_free(void *pointer)
    {
        for each pointer in your list
        {
            free( ptr_in_your_list );
        }
    }
    

    But it doesn't sound like a good idea and I would certainly not do that, at least for general purpose allocation / deallocation. You'd better allocate and free memory responsibly when it is no longer needed.