3
我有一个代码片段,其连接到MySQL数据库这样的(而不是直接从代码,所以可能有错别字):连接失败时是否需要mysql_close?
m_connectionHandler = mysql_init(NULL);
if (m_connectionHandler == NULL)
{
// MySQL initialization failed
return;
}
MYSQL *tmp = mysql_real_connect(m_connectionHandler,
m_hostname,
m_username,
m_password,
m_dbName,
m_port,
NULL,
m_flags);
if (tmp == NULL)
{
// Connect failed
mysql_close(m_connectionHandler);
return;
}
我的问题是,如果mysql_close
(第二if语句tmp == NULL
),在当mysql_real_connect
返回NULL,是必需的,或者如果mysql_real_connect
失败时为我释放连接处理程序?
该文档确实声明您从mysql_init
获得的内容应该被mysql_close
释放,但有迹象表明它在失败时已被释放mysql_real_connect
。
任何人都可以为我阐述一些这方面的信息吗?
我终于通过源代码进行了检查,看起来他们在'mysql_real_connect'的底部执行了一些free'ing内存操作,但它并不完全清楚它执行了所有'mysql_close'操作,所以我会接受这个答案。 – 2009-09-13 12:05:45