gpt4 book ai didi

c - 解除分配多个内存指针的最方便的方法?

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

我正在寻找最方便/最好/最智能的多重内存释放方法。不太确定这是否是最好的解释,但这里有一个例子可以说明我想做什么:

void func()
{
int* ptr1 = malloc(1);
if(ptr1 == NULL)
{
//...
}

int* ptr2 = malloc(1);
if(ptr2 == NULL)
{
//...
free(ptr1);
}

int* ptr3 = malloc(1);
if(ptr3 == NULL)
{
//...
free(ptr2);
free(ptr1);
}

//code...
}

我唯一想到的是充满标志的数组,如果标志被提升,则必须释放特定的内存。还有其他更方便的方法吗?您可以想象,如果需要更多的 malloc(),我需要重复多少次 free()

最佳答案

你贴的是一个函数中错误处理和资源释放的常见做法,你获取了多个资源,万一发生错误,你需要释放之前获取的资源,没有错,就这样吧一个一个。

void func(void) {
void *ptr1 = NULL;
void *ptr2 = NULL;
void *ptr3 = NULL;

ptr1 = malloc(SIZE);
if (!ptr1) goto end;

ptr2 = malloc(SIZE);
if (!ptr2) goto end;

ptr3 = malloc(SIZE);
if (!ptr3) goto end;

// do your work with the buffers

end:
free(ptr1);
free(ptr2);
free(ptr3);
}

关于c - 解除分配多个内存指针的最方便的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712897/

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