SEGFULT使用MySQL/C++连接器获取结果 我试图通过MySQL/C++连接器通过C++显示一个小的MySQL表,但是当我执行以下函数时,我的程序要么退出消息中止,要么我得到一个Sebug。有人能告诉我我做错了什么吗?我认为我很好地遵循了文档:/ void addressBook::display(sql::Connection* con) { sql::Statement *stmt; sql::ResultSet *res; // Create the statement object stmt = con->createStatement(); // Execute a query and store the result in res res = stmt->executeQuery("SELECT * FROM address_book " "ORDER BY last_name, first_name"); // Loop through the results and display them if(res) { while(res->next()) { std::cout << "Name: " << res->getString("first_name") << " " << res->getString("last_name") << std::endl << "Phone: " << res->getString("phone") << std::endl << "eMail: " << res->getString("email") << std::endl << "City: " << res->getString("city") << std::endl << "Comments: " << res->getString("comments") << std::endl << std::endl; } } delete stmt; delete res; }

SEGFULT使用MySQL/C++连接器获取结果 我试图通过MySQL/C++连接器通过C++显示一个小的MySQL表,但是当我执行以下函数时,我的程序要么退出消息中止,要么我得到一个Sebug。有人能告诉我我做错了什么吗?我认为我很好地遵循了文档:/ void addressBook::display(sql::Connection* con) { sql::Statement *stmt; sql::ResultSet *res; // Create the statement object stmt = con->createStatement(); // Execute a query and store the result in res res = stmt->executeQuery("SELECT * FROM address_book " "ORDER BY last_name, first_name"); // Loop through the results and display them if(res) { while(res->next()) { std::cout << "Name: " << res->getString("first_name") << " " << res->getString("last_name") << std::endl << "Phone: " << res->getString("phone") << std::endl << "eMail: " << res->getString("email") << std::endl << "City: " << res->getString("city") << std::endl << "Comments: " << res->getString("comments") << std::endl << std::endl; } } delete stmt; delete res; },c++,mysql,segmentation-fault,C++,Mysql,Segmentation Fault,完整的,尚未完成的程序可以在这里找到,以供参考 此外,正在调用的表中的每个字段都包含一个有效字符串 编辑调试器消息可在此处找到:看起来您调用delete的顺序不对。首先删除res ResultSet析构函数可以引用关联的语句 通常,您应该按照创建/分配对象的相反顺序执行free/delete操作。看起来您调用delete的顺序不对。首先删除res ResultSet析构函数可以引用关联的语句 通常,您应该按照创建/分配对象的相反顺序执行释放/删除操作。问题在于我的系统上的库安装不正确;根据文档,

完整的,尚未完成的程序可以在这里找到,以供参考

此外,正在调用的表中的每个字段都包含一个有效字符串


编辑调试器消息可在此处找到:

看起来您调用delete的顺序不对。首先删除res

ResultSet析构函数可以引用关联的语句


通常,您应该按照创建/分配对象的相反顺序执行free/delete操作。

看起来您调用delete的顺序不对。首先删除res

ResultSet析构函数可以引用关联的语句


通常,您应该按照创建/分配对象的相反顺序执行释放/删除操作。

问题在于我的系统上的库安装不正确;根据文档,您运行makeclean作为一个中间步骤,而它应该是make


多亏了c++的vinleod——来自的basic Vincent Damewood帮助我解决了这个问题。

问题在于我的系统上的库安装不正确;根据文档,您运行makeclean作为一个中间步骤,而它应该是make


多亏了c++中的vinleod——来自的basic Vincent Damewood帮助您解决了这个问题。

您的调试器怎么说?它告诉你什么行号?那不是调试器。它是glibc;具体地说,它检测到您的程序正在向free传递一个无效指针。即使你不直接打免费电话,你正在使用的图书馆也是免费的。GNU调试器是gdb。有各种包装gdb的程序,包括Emacs、Eclipse和NetBeans?它告诉你什么行号?那不是调试器。它是glibc;具体地说,它检测到您的程序正在向free传递一个无效指针。即使你不直接打免费电话,你正在使用的图书馆也是免费的。GNU调试器是gdb。有各种包装gdb的程序,包括Emacs、Eclipse和NetBeans。很抱歉,回溯信息在这里:我修复了它,但它似乎没有做任何事情/我把它修好了,但似乎什么也没用/