我有一个在动态数组中实现的栈。以下是我的一些功能。当我调用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