我有一個在動態數組中實現的棧。以下是我的一些功能。當我調用stk_reset函數時,似乎堆棧沒有完全釋放。在一個結構中的指針指向的自由數組C
這是我的結構。這是我必須有指向結構內部的指針動態數組
typedef struct stack {
char *items;
int arrSize;
int top;
} StackStruct;
void stack_create(StackStruct *s) {
char *arr = malloc(sizeof(char)*2);
if (arr == NULL) {
printf("Insufficient memory to initialize stack.\n");
return;
}
s->arrSize = 2;
s->items = arr;
s->top = -1;
}
如何解除分配列保持堆棧的每一個元素的要求?我用for循環免費((s-> items)++)這個語句,但它不起作用。
void stk_reset(StackStruct *s) {
int i;
for (i = 0; i <= s->arrSize; i++)
free((s->items)++);
free(s->items);
s->items = NULL;
s->top = -1;
s->arrSize = 0;
}
你應該學習'malloc'和'free'做什麼,在一個簡單的例子中練習使用它們,然後重新訪問你的設計。 –
'免費()'不這樣工作。 – tangrs