2011-07-27 11 views
0

私は次のコードリテラルでSysAllocStringを使用する際に問題がありますか?

void Test() 
    { 
    BSTR aBstr = ::SysAllocString(L"blah"); 
    PrintBSTR(aBstr); 
    ::SysFreeString(aBstr); 
    } 

    void PrintBSTR(BSTR _aBstr) 
    { 
    PrintWstring(_aBstr); 
    } 

    void PrintWstring(std::wstring _aWstring) 
    { 
    std::wcout << _aWstring << std::endl 
    } 

を持っていることは、デバッグに適していますが、私はリリースでのメモリの破損を取得します。実際には、私がPrintWstringに入っているときに悪いポインタを得て、_aWstringにはゴミが含まれています。私はSysAllocStringがリテラルでうまくいっていないと推測しています。何か案が?

+0

コードをデバッグして、これらの変数に含まれる内容を確認してください。 – Ajay

+0

私のために働く。他の何かが間違っている可能性があります。 – sharptooth

答えて

2

リテラルをSysAllocStringに渡すことは何も問題ありません。

+1

十分に良い。私は問題の根源には達しませんでしたが、私は自分のアプリケーションを構築していた方法と、別のリンケージを使用していました。おそらく、DLLにメモリを割り当てて、別の場所で解放しています... – rturrado

関連する問題