C++でプログラムを組んでいます。
プログラムには、QueryBinaryValueメソッドを使って、レジストリを読み出す部分がありました。
Windows8やWindows7では、期待通りに動くのに、8.1では動きませんでした。
最初、OSの32ビットと、64ビットで挙動が異なったため、レジストリの32ビットと64ビットの違いを疑いました。
しかし、これは、主に、レジストリのsoftware関係の場合に影響することから、今回の原因とは異なりました。
原因を探っていくと、Debugモードでビルドしたプログラムは期待通りに動くことがわかりました。
さらに調べると、QueryBinaryValueの引数に、配列のポインタのポインタを渡していることが分かり、これが原因だと分かりました。
C++は、これが怖いです。
void*は、なんでも受け取りますから。
Windows8.1には、メモリリーク対策が施されているのでしょうか。
珍しく、Windowsに感謝しました(笑)
0 件のコメント:
コメントを投稿