| | |
| | | |
| | | //解决办法: |
| | | QWidget *widget1 = nullptr; |
| | | if (widget1) { //使用指针前,先确认其是否为nullptr |
| | | if (widget1) { //使用指针前,先确认其是否为nullptr//这种判断方式正确吗?byxue |
| | | widget1->show(); |
| | | } |
| | | |
| | |
| | | widget3 = nullptr; //避免野指针 |
| | | |
| | | //③内存泄露:未释放动态分配的内存 |
| | | void createLeak() { |
| | | void createLeak() {//这种方法的定义方式就有问题,不能在方法里再定义方法,建议把内存泄露专门写一个测试文件 |
| | | int *ptr = new int(10); //分配后未释放 |
| | | } |
| | | //解决办法: |
| | | void createLeak() { |
| | | void createLeak() {//这种方法的定义方式就有问题,不能在方法里再定义方法 |
| | | int *ptr = new int(10); //分配后未释放 |
| | | delete ptr; |
| | | ptr = nullptr; |
| | |
| | | //混合使用父对象和智能指针 |
| | | 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; |