mysql_query() 带有简单查询段错误
mysql_query() with simple query segfault
我有这个超级简单的代码:
#include <winsock.h>
#include <mysql.h>
int main() {
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "option");
if (mysql_real_connect(&mysql, "localhost", "root", "pass", "data", 0, NULL, 0)) {
mysql_query(&mysql, "SELECT * FROM versions");
mysql_close(&mysql);
}
else {
return 1;
}
return 0;
}
调试时,第 9 行 (mysql_query
) 出现分段错误。
一个想法?
此代码有效:
#include <winsock.h>
#include <mysql.h>
int main() {
MYSQL* mysql = new MYSQL;
mysql_init(mysql);
if (mysql_real_connect(mysql, "localhost", "root", "pass", "data", 0, NULL, 0)) {
mysql_query(mysql, "SELECT * FROM versions");
mysql_close(mysql);
}
else {
return 1;
}
return 0;
}
- 为
MYSQL
对象 使用指针
将mysql_init(mysql)
的return放入mysql
本身 =>内存泄漏
- 不要使用
mysql_options
我有这个超级简单的代码:
#include <winsock.h>
#include <mysql.h>
int main() {
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "option");
if (mysql_real_connect(&mysql, "localhost", "root", "pass", "data", 0, NULL, 0)) {
mysql_query(&mysql, "SELECT * FROM versions");
mysql_close(&mysql);
}
else {
return 1;
}
return 0;
}
调试时,第 9 行 (mysql_query
) 出现分段错误。
一个想法?
此代码有效:
#include <winsock.h>
#include <mysql.h>
int main() {
MYSQL* mysql = new MYSQL;
mysql_init(mysql);
if (mysql_real_connect(mysql, "localhost", "root", "pass", "data", 0, NULL, 0)) {
mysql_query(mysql, "SELECT * FROM versions");
mysql_close(mysql);
}
else {
return 1;
}
return 0;
}
- 为
MYSQL
对象 使用指针
将=>内存泄漏mysql_init(mysql)
的return放入mysql
本身- 不要使用
mysql_options