バグ:COM用文字列型(BSTR)の扱い

Posted: 2012年11月18日

COM用文字列型(BSTR)の扱いでよく書いてしまうバグを紹介します。
ちなみに、COMとは、Component Object Modelの略であり、再利用可能なソフトウェア コンポーネントを作成するための仕様です。
よく関わるものは、msxmlでxmlを操作する際に使用します。(msxmlがcomでできているため)

プログラムプログラム:

 #include  <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    BSTR strSrc = ::SysAllocString(L"12345");
    CString strDest = (LPCTSTR)(_bstr_t)strSrc ;

    // 処理

    return 0;
 }

このプログラムにどのような文字列変換関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , , | コメント無し »

バグ:文字列の文字コード変換

Posted: 2012年11月08日

文字列の文字コード変換する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include <winnls.h>

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("あいうえお12345");
    WCHAR szDest[128];

    // 変換
    ::MultiByteToWideChar(CP_THREAD_ACP, 0, strSrc, strSrc.GetLength(), szDest, sizeof(szDest));

    //
    // 処理
    //

    return 0;
 }

このプログラムにどのような文字列の文字コード変換関連のバグがあると思いますか?



カテゴリー: バグ, 文字コード | タグ: , , , , | コメント無し »