背景:运行项目代码时出现了core,通过gdb调试发现程序最后是在调用mysql_num_rows()时产生了段错误,且入参为0x0;也就是说mysql_num_rows()这个api没有做入参检查。
为了验证这个猜想写了个最简单的代码测试:
#include<mysql/mysql.h>
#include<stdio.h>
int main()
{
mysql_num_rows(NULL);
return ;
}
结果:
gcc mysql_row.c -lmysqlclient -o mysql_row
./mysql_row
段错误 (core dumped)
结论:mysql_num_rows()这个api确实没做入参检查 使用时一定记得自己做入参检查 = =!