- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
:内存泄漏的原因是什么?
情况
:我使用 C++ 和使用 MySQL C API 的 MySQL 构建了一个简单的命令行程序
问题是,程序从对象 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);
}
最佳答案
首先:为每个查询打开一个新连接(就像您在 resetTable()
中所做的那样)是非常浪费的。您真正想要做的是在应用程序启动时打开一个连接,将其用于所有内容(可能通过将连接存储在全局中),并在完成后关闭它。
不过,要回答您的问题:您需要调用 mysql_free_result()
完成后在结果集上。
关于c++ - libmysqlclient.18.dylib 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170881/
我刚刚用 Ubuntu 10.04.1 amd64 服务器构建了一个新的开发盒,安装了所有的库和东西,但现在我的程序在 libmysqlclient16 中随机出现段错误。 只是为了消除我试图降级到
我有多个线程需要连接到 MySQL 服务器的单个实例。如果每个线程都创建并处理自己的连接,那么一切都会按预期进行。我想像这样实现一个简单的连接池: void query_user(MYSQL* con
在 Amazon EC2 上(uname -r 给出“3.4.37-40.44.amzn1.x86_64”,我听说它基于 Cent OS)我尝试安装: yum install mysql yum in
我正在 Linux 平台上构建 C 应用程序。我需要使用 libmysqlclient 连接到数据库。 我下载了linux源码包mysql-connector-c-6.0.2.tar.gz。我按照说明
我在使用 zappa 部署的 AWS lambda 上运行了 Flask API。 虽然实例化它无法找到 libmysqlclient.so.18 文件,我认为这会消耗大量时间。 附加图像中的错误消息
我正在尝试使用 flatpak 构建一个 Vala 程序。我需要连接到 mysql 服务器,这就是为什么我需要将 libmysqlclient 与我的 flatpak 捆绑在一起。 这就是我将 mys
ruby 2.6.3乌类图16.04无法找到包 libmysqlclient-dev 说明:获取mysql2 0.5.2安装带有 native 扩展的 mysql2 0.5.2Gem::Ext::Bu
我设置了 Crontab: [root@root mysql]# crontab -l 5 * * * * php /home/admin/public_html/scheduleSendMa
我想启动一个进程,但它显示“./log/BillServer_err:./Bill/BillServer: 加载共享库时出错:libmysqlclient.so.18: 无法打开共享对象文件:没有这样
我记得,几年前当我开始使用 mySQL 时,为了找到库(尤其是 mySQL 库!)而“就这样”设置东西是一场噩梦。就我而言,我相信 ldconfig 是解决问题的工具。快进到 2012 年 - 刚刚安
我开始安装,现在我收到文件依赖性错误 参见: root@ca [~/sitebuilder]# rpm -Uhv updates/*.rpm error: Failed dependencies: l
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我一直在遵循 StackOverflow 帖子的建议,并且有人要求我使用 MySQLdb 来验证我的计算机上是否有 libmysqlclient.16.dylib。在 OS X 10.8 中哪里可以找
我正在尝试创建一个项目,但出现了错误。 [root@54 Source]# make -j8 -C ./Connector usa make: se ingresa al directorio `/l
我想研究mysql-connector-java依赖于.so文件 你知道mysql-connector是纯java的吗? 最佳答案 MySQL Connector/J 是纯 Java 驱动程序。它不需
我在一个共享托管服务器上运行一个 python 脚本,直到今天早上,该服务器的 MySQL 版本为 4。现在它有版本 5。我的 python 脚本无法再连接到 MySQL,因为它找不到 libmysq
问题:内存泄漏的原因是什么? 情况:我使用 C++ 和使用 MySQL C API 的 MySQL 构建了一个简单的命令行程序 问题是,程序从对象 malloc xx bytes" 中发生了许多“小”
我正在尝试捆绑安装,但中途出现错误: Make sure that `gem install mysql -v '2.9.1'` succeeds before bundling. and while
我尝试了日以继夜地谷歌搜索和阅读 MySQL 文档,但我似乎无法找出可能导致内存泄漏的原因。 它似乎是随机发生的,这是唯一泄漏的函数。 代码: unsigned long numRowQuery(st
我应该使用哪个来链接 mysqlclient 库?它们之间有什么区别?我似乎找不到答案。谢谢。 最佳答案 较新版本的 MySQL 客户端分发不包括“_r”版本。有些可能有从 libmyqslclien
我是一名优秀的程序员,十分优秀!