未初始化的本地变量(变量是类中的对象)-MYSQL



我使用的是Windows 10 Visual Studio 2015。

好吧,不管怎样,这是我的代码,我得到了这个错误:

uninitialized local variable 'driver'

我只是在遵循MySQL主网站上的一个教程(示例),这似乎发生了,所以有人能解释为什么要这样做吗?或者告诉我一个修复方法。:)我试着让它保持静态,直到我点击按钮,它才通过,然后我收到了一条无效的写入内存消息。希望这足以让你告诉我发生了什么。

  LRESULT CALLBACK WndProc(...)
    {
       ...
       switch (LOWORD(wparam))
                    {
                        case SQL_BUTTON_LAUNCH:
                            using namespace sql;
                            Driver *driver;
                            Connection *con;
                            Statement *stmt;
                            ResultSet *res;
                            con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
                            con->setSchema("test");
                            stmt = con->createStatement();
                            res = stmt->executeQuery("SELECT 'Hello World!' AS _message");

                            delete res;
                            delete stmt;
                            delete con;
                            //SQLConnection();
                            break;
                    }
    }

您需要添加

driver = get_driver_instance();

在调用之前

driver->connect (..)

否则,Driver *driver;只声明一个指针。不会为其分配有效值。因此,通过它调用connect(..)会取消引用该指针,从而导致未定义的行为。未定义行为的一个特殊情况是问题中提到的内存访问违规错误。

当调用get_driver_instance ()时,它会执行获取有效指针所需的步骤并返回该指针,然后您可以使用该指针进行连接。

最新更新