gpt4 book ai didi

c - 是否存在内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 15:05:58 25 4
gpt4 key购买 nike

我正在查看作业问题。有了它,就有了这段 C 代码:

char* read_from_file (const char* filename, size_t length) {
return NULL;
}

void main (int argc, char **argv) {
char* buff;
if ((buff = read_from_file("test1.txt", 10)) == NULL) {
fprintf(stdout, "Failed to read test1.txt\n");
} else {
fprintf(stdout, "buff is: %s\n", buff);
}
if ((buff = read_from_file("test2.txt", 10)) == NULL) {
fprintf(stdout, "Failed to read test2.txt\n");
} else {
fprintf(stdout, "buff is: %s\n", buff);
}
}

问题表明内存正在泄漏。它告诉我在主程序中插入 free(buff) 语句以抑制内存泄漏。我一直认为内存泄漏通常与动态内存分配有关。同样,不应该使用 free() 来释放指向先前使用 malloc() 等分配的内存块的指针。

这个作业问题有什么我遗漏的吗?

注意:我只是在寻求建议和见解。

最佳答案

这里肯定缺少一些东西。该程序中没有进行内存分配——它调用的唯一标准库函数是fprintf,它不分配内存(在调用者不可见的内部簿记之外)。因此,它不会泄漏内存。

您是否可能应该使用 read_from_file 函数的不同定义?一个简单的实现如下:

char* read_from_file (const char* filename, size_t length) {
char *buff = malloc(length);
open the file, read some data into buff, close it
return buff;
}

main 中所示的方式使用时,会导致程序泄漏内存。

关于c - 是否存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39462059/

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