Copyright (C) 2000-2012 |
GNU Info (libc.info)Freeing after MallocFreeing Memory Allocated with `malloc' ...................................... When you no longer need a block that you got with `malloc', use the function `free' to make the block available to be allocated again. The prototype for this function is in `stdlib.h'. - Function: void free (void *PTR) The `free' function deallocates the block of memory pointed at by PTR. - Function: void cfree (void *PTR) This function does the same thing as `free'. It's provided for backward compatibility with SunOS; you should use `free' instead. Freeing a block alters the contents of the block. *Do not expect to find any data (such as a pointer to the next block in a chain of blocks) in the block after freeing it.* Copy whatever you need out of the block before freeing it! Here is an example of the proper way to free all the blocks in a chain, and the strings that they point to: struct chain { struct chain *next; char *name; } void free_chain (struct chain *chain) { while (chain != 0) { struct chain *next = chain->next; free (chain->name); free (chain); chain = next; } } Occasionally, `free' can actually return memory to the operating system and make the process smaller. Usually, all it can do is allow a later call to `malloc' to reuse the space. In the meantime, the space remains in your program as part of a free-list used internally by `malloc'. There is no point in freeing blocks at the end of a program, because all of the program's space is given back to the system when the process terminates. automatically generated by info2www version 1.2.2.9 |