/**********************************************************************
测试多次free的后果
***********************************************************************/
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int *p = (int *)malloc(100);
free(p);
cout<<"已经free一次了,再free一次..."<<endl;
free(p);
return 0;
}
其中的_CrtIsValidHeapPointer(pUserData)在MSDN中的描述是:
The _CrtIsValidHeapPointer function is used to ensure that a specific memory address is within the local heap. The “local” heap refers to the heap created and managed by a particular instance of the C run-time library. If a dynamically linked library (DLL) contains a static link to the run-time library, then it has its own instance of the run-time heap, and therefore its own heap, independent of the application’s local heap. When_DEBUG is not defined, calls to_CrtIsValidHeapPointer are removed during preprocessing.
为了防止迷途指针,或者是多次free()带来不可预知的异常,最好是将对应的指针,置为NULL,这样比较安全。