gpt4 book ai didi

c - Free() 部分释放的字符串数组 C

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

假设我有一个字符串数组,其中一些已经被释放,例如:

char **array;
array = malloc(20*sizeof(char*));

for(i=0;i<arr_size;i++)
{
array[i]='\0';
free(array[i]);
}
free(array);

这是正确的做法吗?因为我似乎仍然有一些内存泄漏,在我的例子中是一个包含 20 个字符串的数组,其中 9 个已经被释放。

我想问题是如何释放“已释放”的字符串。感谢您的帮助!

最佳答案

I guess the question is how to go about freeing "freed" strings.

好吧,你不知道。您必须 free 每个 malloc 的字符串恰好一次。在同一个字符串上多次调用 free 将导致未定义的行为。

除此之外,您的问题如下:

array[i]='\0';

在这里,您在释放之前覆盖了指针的值。

关于c - Free() 部分释放的字符串数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360075/

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