更新:对不起,只是一个大错误。写是没有意义的,int *a = 3;
但是请想想这个案例的类比TCHAR *a = TEXT("text")
;(我编辑了我的问题,所以有些答案和评论很奇怪,因为它们是针对我不适合的原始问题的)
在 main 函数中,假设我有一个指针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))
,它使用 and 操作TCHAR
并TCHAR*
返回一个类型的值LPTSTR
。