更新:申し訳ありませんが、大きな間違いです。書いても無意味ですがint *a = 3;
、例えで考えてみてくださいTCHAR *a = TEXT("text")
。(質問を編集したため、適切ではない元の質問に対するものであるため、一部の回答とコメントは奇妙です)
メイン関数では、ポインターがあるとしますTCHAR *a = TEXT("text");
。次に、次のコードを実行します。
int i;
for (i = 0; i < 1000; i++) {
a = test(i);
}
関数は次のようTCHAR* test(int par)
に定義されます。
TCHAR* test(int par)
{
TCHAR *b = TEXT("aaa");
return b;
}
私の質問は、上記のコードを実行した後、プログラムが終了する前に、メモリ内で:
1. the pointer `a` remains?
2. The 1000 pointers `b` are deleted each time the function test(...) exits ?
3. But there are still 1000 memory blocks there?
実際、私の質問は、TCS_TOOLTIPS スタイルのタブ コントロールでマウスがタブ項目の上にあるときにツールチップを表示する次のコードから動機付けられています。
case WM_NOTIFY
if (lpnmhdr->code == TTN_GETDISPINFO) {
LPNMTTDISPINFO lpnmtdi;
lpnmtdi = (LPNMTTDISPINFO)lParam;
int tabIndex = (int) wParam; // wParam is the index of the tab item.
lpnmtdi->lpszText = SetTabToolTipText(panel->gWin.At(tabIndex));
break;
}
呼び出すたびにメモリ使用量が増加するかどうかを考えています
SetTabToolTipText(panel->gWin.At(tabIndex))
で操作しTCHAR
、TCHAR*
型の値を返しますLPTSTR
。