ホームページ データベース mysql チュートリアル MySQL连接数据库函数内存泄露解决方案

MySQL连接数据库函数内存泄露解决方案

Jun 07, 2016 pm 05:04 PM

Linux 下使用C操作MySQL数据库时写个测试程序 int main(void) { MYSQL m_mysql; mysql_init(m_mysql);

Linux 下使用C操作MySQL数据库时写个测试程序

  • {  
  •     MYSQL m_mysql;  
  •     mysql_init(&m_mysql);  
  •       
  •       
  •     if(mysql_real_connect(&m_mysql,pLocalhost,pUser,pPass,pDB,0,NULL,0) == NULL) 
  • //mysql_connect() 连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。
  •         cout"connect failed"
  •     else  
  •         cout"connect success"
  •        
  •     mysql_close(&m_mysql);      
  • 编译后使用valgrind检测内存泄露

    [root@localhost string]# valgrind --tool=memcheck --leak-check=full ./mysql 
    ==10352== Memcheck, a memory error detector
    ==10352== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
    ==10352== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
    ==10352== Command: ./mysql
    ==10352== 
    connect success
    ==10352== 
    ==10352== HEAP SUMMARY:
    ==10352==     in use at exit: 61,336 bytes in 16 blocks
    ==10352==   total heap usage: 118 allocs, 102 frees, 115,929 bytes allocated
    ==10352== 
    ==10352== 24,528 bytes in 6 blocks are possibly lost in loss record 4 of 5
    ==10352==    at 0x4005903: malloc (vg_replace_malloc.c:195)
    ==10352==    by 0x30DD75: my_once_alloc (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x30E59C: ??? (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x30EF96: ??? (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x30F111: get_charset_by_csname (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x32C3D2: mysql_init_character_set (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x32DABB: mysql_real_connect (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x8048A76: main (str.cpp:32)
    ==10352== 
    ==10352== 28,616 bytes in 7 blocks are possibly lost in loss record 5 of 5
    ==10352==    at 0x4005903: malloc (vg_replace_malloc.c:195)
    ==10352==    by 0x30DD75: my_once_alloc (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x30E57A: ??? (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x30EF96: ??? (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x30F111: get_charset_by_csname (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x32C3D2: mysql_init_character_set (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x32DABB: mysql_real_connect (in /usr/lib/mysql/libmysqlclient.so.15.0.0)
    ==10352==    by 0x8048A76: main (str.cpp:32)
    ==10352== 
    ==10352== LEAK SUMMARY:
    ==10352==    definitely lost: 0 bytes in 0 blocks
    ==10352==    indirectly lost: 0 bytes in 0 blocks
    ==10352==      possibly lost: 53,144 bytes in 13 blocks
    ==10352==    still reachable: 8,192 bytes in 3 blocks
    ==10352==         suppressed: 0 bytes in 0 blocks
    ==10352== Reachable blocks (those to which a pointer was found) are not shown.
    ==10352== To see them, rerun with: --leak-check=full --show-reachable=yes
    ==10352== 
    ==10352== For counts of detected and suppressed errors, rerun with: -v
    ==10352== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 3

    2、解决措施

    简单的说是在断开数据库连接后使用

    mysql_library_end()

    关闭MYSQL 使用的库即在mysql_close(。。。)后添加mysql_library_end()就ok了

    再添加一句,在使用mysql API之前最好是调用mysql_library_init(。。。。)

    linux

  • このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    トップ10グローバルデジタル仮想通貨取引プラットフォームランキング(2025権限ランキング) トップ10グローバルデジタル仮想通貨取引プラットフォームランキング(2025権限ランキング) Mar 06, 2025 pm 04:36 PM

    2025年、グローバルデジタル仮想通貨取引プラットフォームは、トランザクションのボリューム、セキュリティ、ユーザーエクスペリエンスなどの指標に基づいて、2025年に世界のトップ10のデジタル通貨取引プラットフォームを激しく競争しています。 OKXは、強力な技術的強さとグローバルな運用戦略で最初にランクされており、Binanceは高流動性と低料金に密接に続きます。 Gate.io、Coinbase、Krakenなどのプラットフォームは、それぞれの利点がある最前線にいます。このリストには、Huobi、Kucoin、Bitfinex、Crypto.com、Geminiなどの取引プラットフォームがそれぞれ独自の特徴がありますが、投資は注意する必要があります。プラットフォームを選択するには、セキュリティ、流動性、料金、ユーザーエクスペリエンス、通貨選択、規制コンプライアンスなどの要因を考慮し、合理的に投資する必要があります

    数値の最大の素因数を見つける C プログラム 数値の最大の素因数を見つける C プログラム Aug 27, 2023 am 10:09 AM

    素因数分解 - 整数理論では、正の整数の素因数は、その整数を正確に割る素数です。これらの数を見つけるプロセスは、整数因数分解、または素因数分解と呼ばれます。例 - 288 の素因数は: 288=2x2x2x2x2

    トップ10のデジタル通貨取引プラットフォームトップ10のデジタル通貨取引プラットフォームの最新リスト トップ10のデジタル通貨取引プラットフォームトップ10のデジタル通貨取引プラットフォームの最新リスト Mar 17, 2025 pm 05:57 PM

    トップ10のデジタル通貨取引プラットフォーム:1。OKX、2。BINANCE、3。GATE.IO、4。HuobiGlobal、5。Kraken、6。Coinbase、7。Kucoin、8。Bitfinex、9。Crypto.com、10。Gemini、これらの交換は、ユーザーがユーザーを選択できます。

    2025年の通貨サークルのトップ10の交換 2025年の通貨サークルのトップ10の交換 Feb 27, 2025 pm 06:33 PM

    トップ10の仮想通貨取引プラットフォームのランキング(2025年の最新): Binance:グローバルリーダー、高い流動性、規制が注目を集めています。 OKX:大規模なユーザーベース、複数の通貨をサポートし、レバレッジされた取引を提供します。 gate.io:さまざまなフィアット通貨支払い方法を備えた上級交換は、さまざまな取引ペアと投資商品を提供します。 Bitget:デリバティブ交換、高流動性、低料金。 Huobi:さまざまな通貨と取引ペアをサポートする古い交換。 コインベース:厳密に規制されている有名なアメリカの交換。 フェメックスなど。

    デジタル通貨アプリ用のトップ10の取引プラットフォーム、通常の通貨投機プラットフォームアプリの推奨 デジタル通貨アプリ用のトップ10の取引プラットフォーム、通常の通貨投機プラットフォームアプリの推奨 Mar 07, 2025 pm 06:51 PM

    この記事では、10個のデジタル通貨トレーディング。プラットフォームを選択する際には、セキュリティ、流動性、取引料、通貨選択、ユーザーインターフェイス、カスタマーサービスサポート、規制コンプライアンスなどの要因を考慮し、リスクを慎重に評価し、盲目的にトレンドに従うことはありません。

    世界のトップ10仮想通貨取引プラットフォームアプリ本物のダウンロードとインストールチュートリアル 世界のトップ10仮想通貨取引プラットフォームアプリ本物のダウンロードとインストールチュートリアル Mar 12, 2025 pm 05:33 PM

    この記事では、Binance、Okx、Gate.io、Huobi Global、Coinbase、Kucoin、Kraken、Bitfinexなどの主流のデジタル通貨取引プラットフォーム向けのAndroidおよびAppleモバイルアプリのダウンロード方法を提供しています。 AndroidユーザーであろうとAppleユーザーであろうと、対応するプラットフォームの公式アプリのダウンロードリンクを簡単に見つけて、手順に従ってインストールを完了することができます。 この記事では、それぞれの公式Webサイトまたはアプリストアでの検索とダウンロードに関する詳細なガイダンスを提供し、AndroidにAPKファイルをインストールするための特別な手順に関する指示を提供して、ユーザーが迅速かつ簡単にダウンロードして使用できるようにします。

    信頼できるデジタル通貨プラットフォームは何ですか? 信頼できるデジタル通貨プラットフォームは何ですか? Mar 17, 2025 pm 05:45 PM

    信頼できるデジタル通貨プラットフォームには、1。OKX、2。GATE.IO、4。HuobiGlobal、6。Coinbase、7。Bitfinex、9。Crypto.com、10。Geminiが顧客を選択することができます。

    トップ10デジタル通貨アプリトレーディングプラットフォームTop10仮想通貨アプリ2025ランキング トップ10デジタル通貨アプリトレーディングプラットフォームTop10仮想通貨アプリ2025ランキング Mar 13, 2025 pm 07:00 PM

    トップの仮想通貨プラットフォームは次のとおりです。 ランキングは、プラットフォームの流動性、通貨の選択、セキュリティ、ユーザーエクスペリエンス、取り扱い料、コンプライアンスなどの包括的な考慮事項に基づいていますが、参照のみがお客様の責任である必要があります。

    See all articles