سلام
تیکه کد زیرو در نظر بگیرین و بگین علت این که محتوی متغییر testA چه چیزی میتونه باشه (شبیه سوال امتحان شد ببخشید)
* اینکه LPCTSTR چیه و آرایه ای از TCHAR رو میدونم :) مشکلم اینه که چرا دیتا یهو خراب میشه در صورتی که اصلا کاری با اون متغغیر ندارم دیگه.
LPCTSTR ReturnValue()
{
TCHAR tmp[6] = TEXT("Hello");
return tmp;
}
void test()
{
LPCTSTR testA;
testA = ReturnValue();
LPCTSTR testB = testA;
/* Corrupt */
wcout << testB;
}
کدبالا مشکل داره ولی این درسته،
LPCTSTR ReturnValue()
{
TCHAR tmp[6] = TEXT("Hello");
LPCTSTR lpRet = static_cast<LPCTSTR>(malloc(sizeof(tmp)));
_tcscpy_s(LPTSTR(lpRet),sizeof(tmp), tmp);
return lpRet;
}
void test()
{
LPCTSTR testA;
testA = ReturnValue();
LPCTSTR testB = testA;
wcout << testB;
}
فقط چرا تو کد اولی با این با کست هم مشکلی نداره تابع مقدار درست رو برمیگردونه حتی میشه کپیشم کرد ولی به محظ دسترسی تمام رفرنساش خراب میشه !!