智能指针,然并卵
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <string>
#include <memory>#ifndef _SAFE_DELETE
#define _SAFE_DELETE(x) \{ \if( (x) ) { \delete (x); \(x) = NULL; \} \}
#endifclass 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";
}
两个指针指向同一个对象,释放其中一个指针,另外一个就会野指针。当你想引入智能指针解决问题,然并卵,智能指针也是野指针。