PROBLEM
: 内存泄漏的原因是什么?
SITUATION
:我使用 C++ 和 MySQL 使用 MySQL C API 构建了一个简单的命令行程序
问题是,该程序有许多来自对象的“轻微”内存泄漏malloc xx bytes"
,xx 范围从几个字节到 8 kb。所有泄漏链接到库libmysqlclient.18.dylib
。
我已经mysql_free_result()
从代码中删除了所有内容,看看这是否是问题所在,但它仍然是一样的。
我的 MySQL 代码主要由简单的代码组成,例如:
连接:
MYSQL *databaseConnection()
{
// declarations
MYSQL *connection = mysql_init(NULL);
// connecting to database
if(!mysql_real_connect(connection,SERVER,USER,PASSWORD,DATABASE,0,NULL,0))
{
std::cout << "Connection error: " << mysql_error(connection) << std::endl;
}
return connection;
}
执行查询:
MYSQL_RES *getQuery(MYSQL *connection, std::string query)
{
// send the query to the database
if (mysql_query(connection, query.c_str()))
{
std::cout << "MySQL query error: " << mysql_error(connection);
exit(1);
}
return mysql_store_result(connection);
}
查询示例:
void resetTable(std::string table)
{
MYSQL *connection = databaseConnection();
MYSQL_RES *result;
std::string query = "truncate table " + table;
result = getQuery(connection, query);
mysql_close(connection);
}