|
:
: char target[50];
: memset(target,NULL,sizeof(target));
: strcpy(target, pList->Items->Strings[pList->ItemIndex].c_str());
: tempfunction(target);
바로 이 부분... 저로서는 여기가 좀 불안하게 느껴지는 군요.
기억하기론... Strings는 AnsiString의 배열입니다. 즉 문자열을 담게되는 고정 사이즈의 버퍼를 갖고있는 것이 아니라.. 그때그때 주어지는 문자열에 맞게 메모리를 할당해서 문자열을 담고, 필요없으면 메모리를 반납하는 식으로 운영된다는 거죠. 당근, c_str()으로 반환되는 포인터로부터 시작하는 문자열 배열의 사이즈는... 직접변경하거나 초기화 시킬 수 없습니다. 아니, 할수 없는게 아니라 상당히 위험한거죠.
: strcpy(target, pList->Items->Strings[pList->ItemIndex].c_str());
보기에는 pList->Items->Strings[pList->ItemIndex]의 문자열을 ""으로 만들려고 하신 것 같은데... 만약 그런 의도였다면
pList->Items->Strings[pList->ItemIndex] = "";
이렇게 하시는 게 올바른 방법입니다. 아님 말구 -.-;
|