gpt4 book ai didi

c - "Invalid read of size 1"与 mysql_free_result

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

我试图从数据库中获取一个值并将其存储在全局变量中,如下所示:

mysql_query(con, query);
MYSQL_RES *result = mysql_store_result(con);
if ((row = mysql_fetch_row(result)))
{
global_variable = row[1];
}
mysql_free_result(result);

但是,每当我尝试访问我的 global_variable 时,我都会在 Valgrind 中收到“无效读取大小 1”的信息。

==13345== Invalid read of size 1
...
==13345== Address 0x60a3fea is 74 bytes inside a block of size 8,160 free'd
...
==13345== by 0x4E67E9C: mysql_free_result (in /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0)
...

我做错了什么?

最佳答案

您只是保存指针,而不是实际数据。通过调用 mysql_free_result释放数据,您的global_variable就只是一个指向不安全内存的悬空指针。

您需要将 row[1] 的内容 memcpystrncpy 保存到您自己的缓冲区中以便稍后使用,或者您可以使用在调用mysql_free_result之前它。

参见http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-lengths.html了解如何检索行长度以复制它们。

关于c - "Invalid read of size 1"与 mysql_free_result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336639/

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