gpt4 book ai didi

c - 在释放指针变量指向的内容后重用它们是否安全?

转载 作者:IT王子 更新时间:2023-10-28 23:32:21 24 4
gpt4 key购买 nike

释放指针指向的数据后重用指针是否安全且可预测?

例如:

char* fileNames[] = { "words.txt", "moreWords.txt" };
char** words = NULL;
int* wordsCount = NULL;
for ( i = 0; i < 2; ++i ) {
data = fopen( fileNames[i], "r" );
words = readWords( data );
wordsCount = countWords( words );

free( wordsCount );
for ( j = 0; words[j]; ++j )
free( words[j] );
free( words );
fclose( data );
}

*省略错误检查

我正在运行代码,它似乎在运行(没有警告、错误或内存问题),但我想知道在大多数环境(特别是在典型的 Linux 环境中)使用它是否安全且可预测?

如果这不是“安全和可预测的”,那么在两个不同文件上完成相同操作的最佳方法是什么,而不是创建两倍数量的指针等?

编辑:我在问是否可以在释放指针变量所指向的内容后重用它。我知道你不应该在释放后使用指针 value。假设代码工作正常(它按预期工作,内存被正确释放等等)。我无法更改规范。对于这个任务。

谢谢!

最佳答案

你所做的很好:因为在你释放一个指针之后,你在重用它之前重新初始化它。

如果问题是“释放指针后是否安全”,那么答案是“否”。

如果问题是“在释放指针变量的值后重用它是否安全”,那么答案是“是的,前提是在重用它之前将它重新初始化为(新的)有效值”。

关于c - 在释放指针变量指向的内容后重用它们是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/504948/

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