2011-07-27 4 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

관련 문제