【发布时间】:2022-01-11 07:06:32
【问题描述】:
我刚刚在 C 中学习 malloc() 和 free() 并偶然发现了一个我在任何地方都找不到的重要问题。让我们以这个简单的代码 sn-p 为例:
int main(int argc, char *argv[])
{
char *test = malloc(sizeof(char) * 30);
strcpy(test, "test");
FILE *file = fopen("filename", "r");
if (file == NULL){
error("Couldn't open file");
}
free(test);
...
}
malloc() 和 free() 现在如何处理这个只调用 exit(EXIT_FAILURE) 的错误。因为代码没有到达free(test)如果出现错误并且String测试没有被释放是否有问题?还是程序退出时自动释放?
【问题讨论】:
-
与您的问题无关的 Nitpick:
test = "test";将测试指针更改为指向“test”,但它不会将“test”字符串复制到您刚刚分配的内存中,即可能是你想要的。那行应该是strcpy(test, "test"); -
@NickODell 是的,你是对的,但无论如何我都不使用此代码,这只是为了提出问题