我有个问题,快把我逼疯了。
在一个名为cargo_id_whitelist(MYSQL * conexion,struct info * data)的函数中
我执行mysql查询。但每次我调用mysql api函数mysql_use_res(conexion)时,它都会占用大量内存,破坏数据(主要是数据结构)。
示例
printf("-kind-> %d \n",conf_var->next->next->id) //work its display the third node id info;
res=( MYSQL_RES *)mysql_use_result(conexion); //this break my memory
printf("puntero %p \n",res);
printf("-kind-> %d \n",conf_var->next->next->id); //segfaultconf_var是一个链表。
有什么我需要知道的吗?
发布于 2012-01-24 15:12:28
如果,如您的注释所示,您的代码如下:
MYSQL *conn;
if (!mysql_real_connect(conn, blah, blah, blah)) {
return 1;
}那么你就违反了规则,所有的赌注都被取消了。MySQL documentation page for mysql_real_connect()声明:
MYSQL第一个参数应该是现有
结构的地址。在调用
mysql_real_connect()之前,必须先调用mysql_init()来初始化MYSQL结构。
语句MYSQL *conn; (假设它不是静态存储持续时间)只是创建了一个指向任意位置的指针,除非您初始化它,否则使用它可能会给您带来很大的痛苦。
修复方法可能只是简单地替换:
MYSQL *conn;通过以下方式:
MYSQL *conn = mysql_init (NULL);这将为您提供一个正确初始化的新对象,然后您可以将其传递给mysql_real_connect()。
https://stackoverflow.com/questions/5684178
复制相似问题