请教几个类似的的API的区别还有用法

请问几个类似的的API的区别还有用法IsBadCodePtr IsBadHugeReadPtr IsBadHugeWritePtr IsBadReadPtr IsBad

请问几个类似的的API的区别还有用法
IsBadCodePtr 
IsBadHugeReadPtr 
IsBadHugeWritePtr 
IsBadReadPtr 
IsBadStringPtr 
IsBadWritePtr 
//下面的例子为什么测试错误?
procedure   TForm1.Button1Click(Sender:   TObject);    
var
    TB:   TForm;
begin
    TB   :=   TForm.Create(nil);
   // Form2.Show;
    TB.Free;
    if   not   IsBadCodePtr(TB)   and   (PPointer(TB)^   =   Pointer(TForm))   then
    begin
      //应该是内存不存在了啊,怎么还会执行到这里?
        TB.Free;
    end;
end;
谢谢各位大哥,希望能帮我下这几个API究竟是怎么样的,我要判断一个对象或者内存有没有创建请问怎么来判断呢?
[解决办法]
to kiboisme
  如果按楼主前面的做法,对象变量是在方法里声明,也就是局部变量。那么此方法是否还有效呢?这个地方值得怀疑。
[解决办法]
代码已经考虑了局部变量的情况,而且这是完整研究了System.pas以及GETMEM.INC给出的代码,只要不是刻意构造,该函数不会出问题.刻意构造地址,可能让函数判断出错.