判断指针状态 Demo

 
var
   p: ^Integer;
procedure TForm1.btn1Click(Sender: TObject);
begin
  if not assigned(p) then
  begin
    New(P);
    btn1.Caption := '已经New';
  end
  else
    btn1.Caption := '不用NEW了';
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  if assigned(p) then
    ShowMessage('已经New')
  else
    ShowMessage('已经释放');
end;

procedure TForm1.btn4Click(Sender: TObject);
begin
  p:=nil;
  Dispose(P);
  btn1.Caption:='已释放';
end;

 

QT 使用 C++ 构建,因此它也支持 C++ 的所有特性,包括处理指针的操作。判断一个指针是否为空(即是否为“野指针”),你可以通过检查该指针是否等于 `nullptr` 来完成。在 C++11 及之后版本中,标准库引入了 `nullptr` 关键字作为空指针常量。 以下是具体的示例代码: ```cpp #include <iostream> #include <memory> int main() { // 创建一个新的智能指针实例 std::unique_ptr<int> ptr = std::make_unique<int>(42); if (ptr == nullptr) { std::cout << "这是一个野指针" << std::endl; } else { std::cout << "这不是一个野指针,它指向有效的内存:" << *ptr << std::endl; } // 直接将指针置为nullptr,并验证结果 ptr.reset(nullptr); if (ptr == nullptr) { std::cout << "现在这是一个野指针" << std::endl; } else { std::cout << "这不是一个野指针,因为它已经指向nullptr" << std::endl; } return 0; } ``` ### 示例代码分析: 1. **创建智能指针**:`std::unique_ptr<int>` 创建了一个智能指针,用于自动管理分配的内存。在这个例子中,我们初始化它为一个包含整数值 42 的新内存块。 2. **检查是否为野指针**:使用 `if (ptr == nullptr)` 检查指针是否等于 `nullptr`。这确保我们不会尝试访问未分配或已释放的内存。 3. **清理资源**:使用 `.reset()` 函数将智能指针设置为 `nullptr`,这样可以自动清理之前分配的内存。再次检查指针是否仍为 `nullptr`,以验证智能指针是否成功清除了内存并变为无效状态。 通过这种方式,在 QT 或任何其他使用 C++ 的程序中,你可以安全地避免使用野指针,降低运行时错误的风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值