智能指针,然并卵

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

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

相关推荐
雨声不在1 天前
USB 网络共享 + adb 无权限问题排查
adb
YB13751 天前
jetpack compose 副作用 SideEffect
android·kotlin
CHB1 天前
uni-app x 蒸汽模式 性能测试基准报告 Benchmark【Android版】
android·ios·uni-app
带娃的IT创业者1 天前
拆掉那堵墙:LibrePods 如何让 AirPods 在 Android 上重获新生
android·开源项目·airpods·librepods·生态解锁
_阿南_1 天前
flutter 展示的字体突然奔放了
android·flutter·ios
文人sec2 天前
MySQL事务与索引做了什么?
android·笔记·mysql
刘洋浪子2 天前
AndroidStudio保存日志菜单
android
朱涛的自习室2 天前
从 Prompt 到 Graph:AI 工程的进化史
android·前端·人工智能
2501_932750262 天前
Android 中 Serializable 与 Parcelable 的对比与选择
android
王琦03182 天前
第二章 MySQL集群高可用架构
mysql·adb·架构