gpt4 book ai didi

c - C中结构中的指针指向的自由数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:40 24 4
gpt4 key购买 nike

我有一个在动态数组中实现的堆栈。以下是我的一些功能。当我调用 stk_reset 函数时,堆栈似乎没有完全释放。

这是我的结构。要求我必须在结构内部有一个指向动态数组的指针

    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;
}

我如何释放持有堆栈的数组中的每个元素?我将这条语句 free((s->items)++) 与 for 循环一起使用,但它不起作用。

    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,并且您只能释放整个 block ,而不是单个字节。

关于c - C中结构中的指针指向的自由数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21743401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com