Open Iseulf opened 1 year ago
class SqlConnRAII { public: SqlConnRAII(MYSQL** sql, SqlConnPool *connpool) { assert(connpool); *sql = connpool->GetConn(); sql_ = *sql; connpool_ = connpool; } ~SqlConnRAII() { if(sql_) { connpool_->FreeConn(sql_); } } private: MYSQL *sql_; SqlConnPool* connpool_; };
这里采用的是初始化外部变量sql的做法,会FreeConn(sql)执行了两次。为什么不把SqlConnRAII写成unique_ptr那种智能指针的形式呢。
如源码这里,定义了一个匿名变量,那析构函数就会立刻执行,那sql就会立刻被释放,而后源码中又执行了一次FreeConn。
这里采用的是初始化外部变量sql的做法,会FreeConn(sql)执行了两次。为什么不把SqlConnRAII写成unique_ptr那种智能指针的形式呢。
如源码这里,定义了一个匿名变量,那析构函数就会立刻执行,那sql就会立刻被释放,而后源码中又执行了一次FreeConn。