このQStringからconstchar *への変換により、WindowsでDebian識別子が生成されるのはなぜですか?
質問
libssh2をQtでラップしようとしていますが、次のコードがあります: ジェネラコディセタグプレ
問題は、ユーザー名とパスワードがシステムに接続されないことです。なぜですか?
デバッガーによると ジェネラコディセタグプレ
これらは、ユーザー名またはパスワードに指定した値ではありません。toAscii、toLatin1を試し、.data()を追加(または追加しない)しました。それでも、期待値ではなく、これらの値を取得します。私はWindowsを使用しています。これは、私が知る限り、DebianまたはUbuntuでコンパイルされたものがないため、さらに厄介な理由です。
ここで何が起こっているのですか?
解決
このコード: ジェネラコディセタグプレ
はこれと同等です: ジェネラコディセタグプレ
何が起こっているのかわかりますか?ステートメントが実行されるまでに、一時的なQByteArray
はコンパイラによって再び削除されています。data()
は内部のQByteArray
バッファーへのポインターのみを返すため、username
は削除/解放されたメモリを指すようになりました。
この問題を解決するには、username
の代わりにpassword
とQByteArray
をconst char*
に作成し、以前にusername.data()
、password.data()
を使用していた場所の代わりに、username
、password
を使用します。
所属していません StackOverflow