判断指针是否有效

在各类搜索引擎、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;


 

当然,不排除重叠事件。例如再次被申请同样的地址,同样的值的情况下。


版权声明:本文为qq_34453988原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。