0

次のコードを確認してください。

#if 1
    mysqlpp::Connection conn(false);
    conn.connect(FACE_DB_NAME, "localhost","root", "root"); 
#endif

m_pconn = new mysqlpp::Connection(false);
m_pconn->connect(FACE_DB_NAME, "localhost","root", "root");

"1" が #defined で、Connection オブジェクトがスタックにある場合、コードの両方のチャンクが実行されます (conn.connect と m_pconn->connect)

「0」が #defined で、2 番目の Connection オブジェクトが動的に割り当てられている場合、m_pconn->connect でセグメンテーション違反が発生します。

何か案は?

4

1 に答える 1

0

問題は、元のアプリケーションが以下を使用してコンパイルされたことです。

_GLIBCXX_USE_CXX11_ABI=0

しかし、mysql++ はそうではありませんでした。

機会があれば、CRT の問題を理解するために、これをより深く調べる必要があります。

于 2016-04-17T21:19:44.577 に答える