智能指针,然并卵

cpp 复制代码
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <memory>

#ifndef _SAFE_DELETE
#define _SAFE_DELETE(x) \
	{ \
	if( (x) ) { \
	delete (x); \
	(x) = NULL; \
	} \
	}
#endif

class mysql_result
{
public:
	mysql_result(){
		m_nRows = 0;
	}
	~mysql_result(){
		std::cout << "~mysql_result()\n";
	}
	int m_nRows;		// 结果集行数
};

mysql_result *ptest;

void test()
{
	mysql_result *result = new mysql_result();
	std::shared_ptr<mysql_result> p(result);
	_SAFE_DELETE(result);
}

int main()
{
	
	//mysql_result *result = new mysql_result();
	//mysql_result *test = result;
	//_SAFE_DELETE(result);
	test();
	system("pause");
    std::cout << "Hello World!\n";
}

两个指针指向同一个对象,释放其中一个指针,另外一个就会野指针。当你想引入智能指针解决问题,然并卵,智能指针也是野指针。

相关推荐
Sirens.4 小时前
MySQL表设计进阶-约束范式连接索引与事务
android·数据库·mysql
zh_xuan7 小时前
安卓上 mmap读取并修改文件内容
android·mmap
二流小码农7 小时前
鸿蒙开发:实现文本渐变效果
android·ios·harmonyos
光头闪亮亮9 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
光头闪亮亮9 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(上)
android·sqlite·go
光头闪亮亮9 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
Ch_champion9 小时前
2018年之前的Android 项目上使用的技术点(及第三方库)
android
龚礼鹏9 小时前
RK Android16 wifi 投屏失败问题排查
android
晓梦林11 小时前
[ACTF2020 新生赛]BackupFile学习笔记
android·笔记·学习
ITmaster073112 小时前
告别 IDE?Android CLI 来了,开发进入 AI Agent 时代
android·ide·人工智能