一直使用C代码连接mysql数据库,今天用valgrind检测,发现存在内存泄露的问题

代码如下

MYSQL*connection;

connection=mysql_init();

connection=mysql_real_connect(connection,......);

mysql_query(.........);

mysql_close(connection);

在网上查了一番,找到如下解决方案

http://pipal.iteye.com/blog/903506

在mysal_close()后加入mysql_library_end()。

测试,发现仍然泄露。

无奈经过师兄点拨,再加上查询mysql的官网文档,发现mysql_real_connect()存在如下玄机:

Return Values

A MYSQL* connection handle if the connection was successful, NULL if the connection was unsuccessful. For a successful connection, the return value is the same as the value of the first parameter.

意思如下,如果mysql_real_connect()连接成功,返回的指针式第一个参数一样,如果失败,返回NULL

我的代码里面connection首先指向mysql_init()返回的指针,之后又指向mysql_real_connect()的返回的指针,如果成功过的话,这两个指针式同样的,然而,在我的机子上,连接失败了,所以mysql_init()返回的指针丢失了,后续的close我释放的是NULL指针,丢失的指针没有释放,所以内存泄露

这是一个非主流的错误。

这件事警告我,永远不要把一个变量用过多种用途,尤其是指针,指针指向一个区域后千万不要改变,否则,很容易内存泄露,这也就是C++中引入引用的原因吧。

原文:http://www.cnblogs.com/clark-lee/p/4244183.html

c mysql 内存泄露_c代码连接mysql数据库内存泄露的问题相关推荐

  1. c 数据库mysql课程设计_C语言连接MySQL数据库(课程设计总结)

    刚结束课程设计,也预示着假期马上就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注册.登录.菜单管理.超级用户等等一些功能,到现在为止已经做过好几个了,所以基本流程都熟悉了!我 ...

  2. eclipes Java代码连接Mysql数据库

    Java代码连接Mysql数据库C 一.插件的下载与加载 1.下载与本地的MySQL对应版本的连接数据库的包,如mysql-connector-java-8.0.17.jar 下载Connector/ ...

  3. mysql跳过安全_Navicat连接MySQL数据库

    前言: 在使用Gin架构搭建博客的时候,需要设计数据库,以及连接数据库.命令端口操控效率实在是太低且不好管理,这个时候使用Navicat就能轻松高效的使用数据库了. 步骤: 下载安装Navicat,M ...

  4. mysql 遗失对主机的连接,MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)...

    MySQL远程连接丢失问题解决方法(Lost connection to MySQL server) 最近服务器很不稳定,于是重装了mysql 和php 服务,但是接着却遇到了很头疼的麻烦. 远程连接 ...

  5. java连接MySQL几种方法_Java连接MySQL数据库三种方法

    好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...

  6. wdcp mysql密码_WDCP提示无法连接mysql及创建站点提示mysql密码不正确

    一.wdcp系统访问提示无法连接mysql 1.可能是mysql服务没启动,首先ssh登陆服务器,然后执行service mysqld restart重启mysql再访问试下,如果无法启动,先用df  ...

  7. php mysql odbc_javascript连接mysql与php通过odbc连接任意数据库的实例

    脑洞大开用javascript链接mysql,2个小时总算实现了,用到了odbc,后面又想到用php链接odbc链接数据库,也实现了,就把案例放一下. 注意事项: 1.javascript连接mysq ...

  8. 不能连接本地数据库mysql_win7系统下mysql或sqlserver显示无法连接本地数据库如何解决...

    最近有win7系统用户在使用数据的时候可能会遇到一些问题,比如有时候会遇到mysql或sqlserver显示无法连接本地数据库的情况,经过分析可能是相关服务没有开启,本教程就给大家带来win7系统下m ...

  9. MYSQL闪退及DBeaver连接MYSQL出现拒绝连接的解决方法

    问题描述: MYSQL闪退: DBeaver连接MYSQL失败 可能原因是MYSQL服务没有启动  解决方案: 1.使用管理者模式打开CMD 2.进入MYSQL安装目录下的bin目录,并执行mysql ...

最新文章

  1. 英特尔也决定了!正式退出5G智能型手机
  2. 2021年春季学期-信号与系统-第二次作业参考答案-第七小题
  3. 一天搞定CSS:层级(z-index)--18
  4. java里面运行js_在java中利用rhino执行javascript
  5. linux 日志定时轮询流程详解(logrotate)
  6. 拔染印花几点注意事项
  7. 读书笔记之深入理解Java虚拟机
  8. 神经网络求解二阶常微分方程(代码)
  9. dnf新起号怎么才不出人脸_教你如何快速养成一个新号 新角色速成教学
  10. 【无线芯片解读】2.4G专题:(SI24R1简版)Ci24R1
  11. 什么是表压?什么是绝压?表压和绝压什么关系?
  12. 我的java语法基础篇刷题2
  13. Ardunio开发实例-LM75温度传感器
  14. 2017-2018-1 20162316刘诚昊 实验二 树
  15. 考研复试——数据结构
  16. 使用SpringBoot及Construct2的WebSocket制作联机游戏(二)
  17. 1 0.99999的悖论_为什么0.9999…=1,这个等式真得成立吗?
  18. HALCON 引擎学习一
  19. 潍坊职称计算机考试时间安排,2015年山东潍坊职称计算机考试报名时间安排
  20. 理性人——非理性行为?

热门文章

  1. webstorm安装_WebStorm2019安装教程
  2. PP模块快速入门之功能简介
  3. LSMW批处理使用方法(05)_步骤3下
  4. 彻底理解webservice SOAP WSDL
  5. 使用CATT作批量数据导入
  6. 配置MM模块material management几个常见的错误
  7. 中国通货膨胀率2.8%,数据分析买房风险直线上升
  8. PHP中普通方法如何调用静态属性,php中的静态属性和静态方法如何调用
  9. css 浮动在最上层_CSS编码规范
  10. 对象检测目标小用什么模型好_[目标检测] YOLO4论文中文版