以下是在C中實現的一個堆棧結構。我需要編寫一個函數(而不是一個方法)來釋放一個現有的堆棧並免費在堆上分配給它的任何內存。 dispose(stack * s)函數接受一個指向將被丟棄的堆棧的指針。釋放分配給指針的內存vs釋放分配給指針指向的內存
typedef struct {
int allocatedLength;
int logicalLength;
int elementSize;
void *elems;
} stack;
如果我按如下方式實現dispose()函數,是否會導致某些內存永遠不會被釋放?
void dispose (stack *s) {
free (s->elems);
}
在上面的實現中,我只釋放分配給elems的內存,這甚至不在堆上。我們需要記住,元素是指向某物的指針。我們是不是應該釋放某些東西,而不是釋放分配給指針的內存?