hello all,
I created a linked list like this:
Code:
struct storedata
{
int iData;
char cData;
struct storedata *next;
} datastore;
to store data the size of which may varies from time to time.
And I tried to free memory that allocated by malloc() before program quits. The confusion here is I only free the pointers of every nodes like this:
Code:
void freelist(struct storedata *tobefreed)
{
struct storedata * tmp;
while(tobefreed != NULL)
{
tmp = tobefreed->ptr;
free(tobefreed);
tobefreed = tmp;
}
}
But a tutorial says every member in the struct also needs to be freed, like this:
Code:
void freelist(struct storedata *tobefreed)
{
struct storedata * tmp;
while(tobefreed != NULL)
{
tmp = tobefreed->ptr;
//-- added lines [begin] --
free(tobefreed->iData);
free(tobefreed->cData;
//-- added lines [end] --
free(tobefreed);
tobefreed = tmp;
}
}
If it is true, why? I only allocated memory for pointer node, not for members it contains.