【问题标题】:C++ program crashes with no error messages when it executes con = driver->connect(host, user, pass);C++ 程序在执行 con = driver->connect(host, user, pass); 时崩溃且没有错误消息
【发布时间】:2015-09-25 12:07:17
【问题描述】:

我用 C++ 编写了一个程序,该程序通过 mysqlcppconn 6.1 在 xampp 上运行的数据库中连接到 MySQL(我使用的是 windows)。发生这种情况,当尝试连接到 MySQL 时,程序崩溃并且没有错误消息并被 Windows 关闭,让我不知道发生了什么。

# Line that generates the error:
con = driver->connect("tcp://localhost:3306", "root", "root");

我读到这是 MySQL 连接器与 C++ 的旧错误,但没有找到任何可行的解决方案(除了重新编译这个或那个)。

有什么办法可以解决这个错误?

申请代码: https://dl.dropboxusercontent.com/u/85576999/DB8/dbWriteWin.h

【问题讨论】:

  • 即使是 try/catch 也无法阻止应用程序崩溃。

标签: c++ mysql mysql-connector omnet++


【解决方案1】:

来自共享的代码,

   sql::Driver *driver;
   //driver = get_driver_instance();   it is commented out ?????
   try {
        con = driver->connect("tcp://localhost:3306", "root", "root");
    } catch (SQLException e){
        ev << e.what() << "\n";
    }

*driver未初始化,用于调用connect方法。

【讨论】:

  • 驱动初始化被注释掉,因为它遇到另一个错误(未定义对get_driver_instance的引用)。
  • 由于 *driver 没有被初始化,它会指向任何地方并且 connect 方法可能会访问 this 指针和行为未定义它可能会崩溃或运行一些垃圾代码
  • stackoverflow.com/questions/5360501/… 提供有关使用未初始化指针对象的更多信息
猜你喜欢
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多