Posts

Showing posts with the label Malloc

C - Freeing Structs

Answer : Simple answer : free(testPerson) is enough . Remember you can use free() only when you have allocated memory using malloc , calloc or realloc . In your case you have only malloced memory for testPerson so freeing that is sufficient. If you have used char * firstname , *last surName then in that case to store name you must have allocated the memory and that's why you had to free each member individually. Here is also a point it should be in the reverse order; that means, the memory allocated for elements is done later so free() it first then free the pointer to object. Freeing each element you can see the demo shown below: typedef struct Person { char * firstname , *last surName; }Person; Person *ptrobj =malloc(sizeof(Person)); // memory allocation for struct ptrobj->firstname = malloc(n); // memory allocation for firstname ptrobj->surName = malloc(m); // memory allocation for surName . . // do whatever you want free(ptrobj->surName); free(ptrobj-...