Segmentation fault 郁闷

xzhuang 2002-05-26 10:17:33
以下程序是用mysql c api计算t_flow_data表项的记录数:
编译命令行如下:
gcc -I /usr/local/mysql/include/mysql -c connect_database.c
gcc -L /usr/local/mysql/lib/mysql/ -lmysqlclient -lm -o connect_database conne
ct_database.o

执行时,结果正确选择出来了,但是出现Segmentation fault:

Connect Succ
The result is 4999999
Segmentation fault

到底是怎么回事啊?

#include <stdlib.h>
#include <stdio.h>
#include "/usr/local/mysql/include/mysql/mysql.h"
#include "configuration.inc.h"
/*
* 函数介绍:该函数负责数据库的连接
* 输入参数:
* 输出参数:
* 返回值 :成功时返回连接标识,否则返回NULL
* 全局变量:
* 调用模块:
* 抛出异常:错误时输出错误信息
*/
int Connect_DataBase(MYSQL *db_connect)
{
mysql_init(db_connect);

if (!mysql_real_connect(db_connect , HOST , DBUSER , DBPASSWD , DBNAME , 0 ,
NULL ,0))
{
fprintf(stderr , "Failed to Connect DataBase , Error:%s\n" , mysql_error(db_
connect));
return 0;
}
else
return 1;
}

int main()
{
MYSQL *mysql;
MYSQL_RES *mysql_store;
MYSQL_ROW row;

if (Connect_DataBase(mysql))/* Connect DataBase*/
{
printf("Connect Succ\n");
}
else
exit(-1);

mysql_query(mysql , "select count(*) from t_flow_data");

mysql_store = mysql_store_result(mysql);

row = mysql_fetch_row(mysql_store);

printf("The result is %s\n" , row[0]);

mysql_free_result(mysql_store);
mysql_close(mysql);

return 1;
}
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajiefudan 2002-05-26
  • 打赏
  • 举报
回复
你的指针都没有分配,但是free了,看看你的调用给你返回的内存空间是不是需要你自己分配和释放
xzhuang 2002-05-26
  • 打赏
  • 举报
回复
up 一下
xzhuang 2002-05-26
  • 打赏
  • 举报
回复
今天下午一觉醒来,直到自己错在那了
i see , 加上mysql = (MYSQL *) (sizeof(MYSQL));
就ok了.
penny_tian 2002-05-26
  • 打赏
  • 举报
回复
指针是个双刃剑啊!
呵呵!
zhenshi 2002-05-26
  • 打赏
  • 举报
回复
学习来了。指针很恐怖,所以用JAVA。
zhukejun 2002-05-26
  • 打赏
  • 举报
回复
当程序企图读写分配给它的存储区之外的单元或写只读存储区时产生sigsegv
错误,导致的原因常常是由于引用了一个空的或未赋初值的指针,也可能是由于数组越界引起

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧