在各类搜索引擎、BBS里搜索,一般得到的答案都是无法判断的。
不过在特定的属性内是可以判断的。
因为WINAPI有容错机制。
演示下:
HGLOBAL p = GlobalAlloc(GMEM_ZEROINIT, 4);
int val = 100;
WriteProcessMemory(INVALID_HANDLE_VALUE, p, &val, 4, NULL);
GlobalFree(p);
p = NULL;
int ret = 0;
ReadProcessMemory (INVALID_HANDLE_VALUE, p, &ret, 4, 0);
cout<<"是否已释放p:"<<(ret == 0)<<endl;
int * a = new int;
*a = val;
delete a;
a = NULL;
ret = 0;
ReadProcessMemory (INVALID_HANDLE_VALUE, a, &ret, 4, 0);
cout<<"是否已释放a:"<<(ret == 0)<<endl;
当然,不排除重叠事件。例如再次被申请同样的地址,同样的值的情况下。