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";
}
两个指针指向同一个对象,释放其中一个指针,另外一个就会野指针。当你想引入智能指针解决问题,然并卵,智能指针也是野指针。