gpt4 book ai didi

c - free() 上的段错误是指向 char* 的指针

转载 作者:行者123 更新时间:2023-12-02 04:59:32 26 4
gpt4 key购买 nike

当我使用 malloc() 分配内存时,free() 函数出现问题。

当程序运行时,会产生一个段错误。我生成了程序的核心转储。当我使用 gdb 时,它在调用 free() 时显示段错误。

这是我的代码:

char * temp_filename;
temp_filename = (char *) malloc(50);
temp_filename = strrchr(package->_local_filename, '/');
strcat(package->_cache_filename, temp_filename);
free(temp_filename);

我无法找出我的错误。有人帮我找出我的错误吗?谢谢*抱歉代码上的错误,现在可以了*

最佳答案

你用一个指向你正在搜索的其他字符串的指针覆盖你分配的指针:

temp_filename = (char *) malloc(50);
temp_filename = strrchr(package->_local_filename, '/');

然后,您错误地释放了该指针,因为它不再是 malloc() 返回的指针:

free(temp_filename);

要修复,删除分配和释放的代码。

char * temp_filename;
temp_filename = strrchr(package->_local_filename, '/');
strcat(package->_cache_filename, temp_filename);

关于c - free() 上的段错误是指向 char* 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17328886/

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