很奇怪的一个非法内存访问
LRESULT AttrListProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
static HDC hdc;
static PAINTSTRUCT ps;
static ALITEM *item;
static LPTSTR cls;
static ALCLASS *thecls;
static AttrListStruct *als;
als = (AttrListStruct*)GetWindowLong( hWnd, 0 );
switch( uMsg )
{
...
case WM_CREATE:
als = new AttrListStruct;
als->Selection = 0;
als->hwndEdit = CreateWindow("edit", "", WS_CHILD,
0, 0, 0, 0,
hWnd, (HMENU)EDITCTRL,
NULL, 0);//在这里产生非法内存访问,而上面一句正常.
调试发现,在执行到als->hwndEdit时,als的值突然变为0,这是一个单线程程序.并且如果als不是static的,就不会有非法内存访问的问题.