gpt4 book ai didi

c - 如何释放分配给本地静态指针的内存

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

在遗留 C 代码中,我有一个指针,基本上是一个大小等于枚举器之一的数组,并且它在局部范围内是静态的。但是现在我必须删除那个枚举,现在这个静态本地数组出错了。我可以将该数组转换为普通指针,然后动态分配它,但我不确定该怎么做。下面是我从现有代码库中简化的示例代码。

enum
{
E1,
E2,
EOL
};

void func
{
//static int array[EOL]; //-> that how it was earlier
static int *array = (int*)malloc(sizeof(int)*EOL); //Will this allocated memory only once
//or on every invokation.
free(array);//will it free the memory more than once?
}

现在我可以将数组指针移动到全局范围,然后在 main 中分配它并在 atexit 函数中释放它,但我想保持最小的变化,因为我不确定它会对共享项目产生影响吗?

谢谢

最佳答案

malloc 只会发生一次。

1) 你可以使用一个静态 bool 值来让你知道数组变量中的指针是否可以空闲。

2) 您可以释放指针,然后将其设置为 NULL。下一次出现的 free 将不执行任何操作。

关于c - 如何释放分配给本地静态指针的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23537890/

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