xuetao
2025-05-19 eb0256a057c3aa03eca9726f7e6e36f1a80c0345
Test/errorexample.cpp
@@ -17,7 +17,7 @@
  //解决办法:
  QWidget *widget1 = nullptr;
  if (widget1) {  //使用指针前,先确认其是否为nullptr
  if (widget1) {  //使用指针前,先确认其是否为nullptr//这种判断方式正确吗?byxue
    widget1->show();
  }
@@ -35,11 +35,11 @@
  widget3 = nullptr;  //避免野指针
  //③内存泄露:未释放动态分配的内存
  void createLeak() {
  void createLeak() {//这种方法的定义方式就有问题,不能在方法里再定义方法,建议把内存泄露专门写一个测试文件
    int *ptr = new int(10);  //分配后未释放
  }
  //解决办法:
  void createLeak() {
  void createLeak() {//这种方法的定义方式就有问题,不能在方法里再定义方法
    int *ptr = new int(10);  //分配后未释放
    delete ptr;
    ptr = nullptr;
@@ -60,7 +60,7 @@
  //混合使用父对象和智能指针
  QWidget *parent3 = new QWidget;
  // 错误:父对象已管理 button,智能指针会导致双重释放
  std::unique_ptr<QPushButton> button3(new QPushButton(parent));
  std::unique_ptr<QPushButton> button3(new QPushButton(parent));//智能指针的使用有问题
  //解决办法1:仅用父对象管理
  QWidget *parent4 = new QWidget;