|
phinix님
CharToWChar 함수에셔 malloc 으로 할당한 메모리는 어디서 해제하나요?
아래 코드대로라면 메모리 누수가 있을거 같은데요..
=================================================
그냥
AnsiString대신 String쓰시고
Application->MessageBox에서 str.c_str() 하시면 될듯 합니다.
...
왕초보와코드 님이 쓰신 글 :
: 이전에 만든 Char -> w_char 변환 함수가 있는데요, 질문의 코드에 넣어보니 잘 되서 알려드립니다.
:
: (1) 함수 원형 (헤더에 넣으세요)
:
: wchar_t* CharToWChar(const char* pstrSrc);
:
: (2) 함수
:
: wchar_t* TForm1::CharToWChar(const char* pstrSrc)
: {
: int nLen = strlen(pstrSrc)+1;
: wchar_t* pwstr = (LPWSTR) malloc ( sizeof( wchar_t )* nLen);
: mbstowcs(pwstr, pstrSrc, nLen);
: return pwstr;
: }
:
: (3) 예제의 실행코드
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: AnsiString str;
: int nTmp = 10;
:
: str.cat_sprintf("%d,", nTmp);
:
: //Application->MessageBox(L"confirm", str);
: Application->MessageBox(L"confirm", CharToWChar(str.c_str()) );
: }
:
: 이거말고도 두어가지 있었는데 기억이.... 하하 ^^
:
: 3E™ 님이 쓰신 글 :
: : 프로젝트옵션에서 케릭터셋을 char 으로 설정해도 볼랜드빌더2010 은 계속 절 힘들게 하네요.
: :
: : AnsiString str;
: :
: : ~~
: : str.cat_sprintf("%d,", nTmp);
: : ~~
: :
: : Application->MessageBox(L"confirm", str, MB~~)
: :
: : 여기서 자꾸 AnsiString을 거시기해서 못해묵겄다네요.
: :
: : 그렇다고 str을 어케할수도없고.. 그럼 위 소스 다 변경해야되고
: : 좀간단하게 할수없을까요?
: : 아니면 프로젝트를 visual studio 마냥 유니코드 사용안해~ 라는건 없나요? ㅠㅠ
|