FreeAndNil - C++ Builder

C++ Builder 参考手册 ➙ System::Sysutils ➙ FreeAndNil


释放从 TObject 继承过来的类的对象,并清为 NULL

头文件:#include
命名空间:System::Sysutils
函数原型:

  • C++ Builder 11.x
void __fastcall CPPFreeAndNil(System::TObject* &Obj);

template 
void FreeAndNil(T** obj) {
    static_assert(__is_base_of(System::TObject, T), "'T' must derive from System::TObject");
    CPPFreeAndNil(*reinterpret_cast(obj));
}

template 
void FreeAndNil(T* &obj) {
    static_assert(__is_base_of(System::TObject, T), "'T' must derive from System::TObject");
    CPPFreeAndNil(*reinterpret_cast(&obj));
}
  • C++ Builder 10.x
void __fastcall FreeAndNil(void *Obj);

参数:

  • Obj:从 TObject 继承过来的类的对象的指针的地址,11.0 允许直接使用对象的指针

返回值:

  • 释放从 TObject 继承过来的类的对象,并清为 NULL;
  • FreeAndNil(obj); 相当于 delete obj; obj = nullptr;
  • C++ Builder 10.4 版本开始,允许直接使用对象指针,也可以用对象指针的地址,如果参数 obj 不是从 TObject 继承的类的对象,会产生编译错误;例如:TButton *btn; 可以用 FreeAndNil(btn); 也可以用 FreeAndNil(&btn); 释放 btn 占用的资源,并且把 btn 清为 nullptr
  • C++ Builder 10.3 版本之前只可以使用 FreeAndNil(&btn); 并且编译器也无法检查 btn 是否从 TObject 继承,如果不是,运行时出错

相关:

  • System::Sysutils::FreeAndNil
  • System::Sysutils::CPPFreeAndNil
  • System::Sysutils::NewStr
  • System::Sysutils::DisposeStr
  • System::Sysutils::StrAlloc
  • System::Sysutils::AnsiStrAlloc
  • System::Sysutils::WideStrAlloc
  • System::Sysutils::StrBufSize
  • System::Sysutils::StrNew
  • System::Sysutils::StrDispose
  • System::Sysutils
  • System::StringOfChar
  • System
  • std::malloc
  • std::calloc
  • std::realloc
  • std::free

C++ Builder 参考手册 ➙ System::Sysutils ➙ FreeAndNil

你可能感兴趣的:(FreeAndNil - C++ Builder)