pointer and which is pointed by the pointer
===

In main function, suppose I have a pointer int `*a = 3;` Then it excutes the following code:

    int i;
    for (i = 0; i < 1000; i++) {
            a = test(i);
    }
with the function `test(int par)` defined by:

    int test(int par)
    {
        int *b = par;
    }

My question is, after executing the above code, but before the program ends, in the memory:

        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, which have values 0 ~ 999?

-----------------------------------------------------------------------------------------

In fact, my question is motivated from the following code, which shows a tooltip when mouse is over a tab item in a tab control with the style 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;
			}

I am thinking if the memory usage increases each time it calls 

`SetTabToolTipText(panel->gWin.At(tabIndex))`, which manipulates with `TCHAR` and `TCHAR*` and return a value of type `LPTSTR`.

