智能指针,然并卵

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";
}

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

相关推荐
用户94261184462914 分钟前
Android开发实战:ListView与RecyclerView使用详解
android
梦里花开知多少9 分钟前
深入解析Launcher3 中的 CellLayout
android·面试
WangJunXiang617 分钟前
MySQL高可用详细解析
android·数据库·mysql
fengci.42 分钟前
polar2026春季个人挑战赛(中等部分)
android
黑马源码库miui5208643 分钟前
JAVA国际版同城上门服务上门送水桶装水配送源码同城上门配送系统源码支持Android+IOS+H5
android·java·ios
黄林晴1 小时前
无奈妥协!六年账号被迫改名,Android 技术圈顺势升级 !
android·运营
2501_915921431 小时前
iPhone 定位功能测试时不越狱来修改手机位置的方法
android·ios·智能手机·小程序·uni-app·iphone·webview
常利兵1 小时前
Android开发秘籍:给图片加上独特水印
android
hnlgzb1 小时前
安卓app体系中,room数据库和datastore是什么关系?有什么不一样?
android·数据库·oracle
PD我是你的真爱粉1 小时前
MySQL 索引进阶:从失效排查到架构哲学
mysql·adb·架构