gpt4 book ai didi

c - 如何在 C 中正确释放 char**

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:31 31 4
gpt4 key购买 nike

我一直对这个二维字符数组感到困惑

char **arg = malloc(sizeof(char*) * argc)
for (int i = 0; i < argc; i++)
arg[i] = malloc(sizeof(char) * size)
...
...

现在假设在一系列操作之后,我忘记了变量 argc,我该如何释放这些内存?我可以做这样的事情吗?这在所有情况下都绝对正确吗?

char **tmp = arg;
while (*tmp != NULL){
free(*tmp);
tmp++;
}
free(arg);

最佳答案

没有

while(*tmp != NULL){

您可能会超出某个点,在该点上您将取消引用尚未分配给的内存并触发未定义的行为。

或者按照建议,您可以将 NULL 显式分配给最后分配的指针,在这种情况下它会起作用。

关于c - 如何在 C 中正确释放 char**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33065236/

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