Sqlite3内存泄漏sqlite3_exec C

时间:2014-03-12 20:02:18

标签: c memory-leaks sqlite

我不知道为什么但我的代码中有一些内存泄漏。 我试着用deleaker或CRTDBG修复它,但我不知道我的内存泄漏在哪里。 修复它的最佳方法是什么?

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

sqlite3* sqlite3_DB_Product;
#define DB_PRODUCT 1


void test_db_basic()
{
        int mDb;
        int mVal = 10;
        mDb = DB_PRODUCT;
        LPTSTR szError;
        LPTSTR lpstr;
        unsigned char buffer[1000];
        init_db();
        _CrtDumpMemoryLeaks();
        DB_sqlite3_exec(mDb, L"BEGIN TRANSACTION", NULL, NULL, &szError);
        if (szError)
                free(szError);
        for (unsigned i = 0; i < mVal; i++)
        {
                sprintf_s((char*)buffer, 300, "REPLACE INTO Products VALUES ('%d', %d, %d)", i, i, i);
                lpstr = Misc_MB2WC(buffer, -1);
                DB_sqlite3_exec(mDb, lpstr, 0, 0, &szError);
                free(szError);
                free(lpstr);
        }
        DB_sqlite3_exec(mDb, L"COMMIT TRANSACTION", NULL, NULL, &szError);
        if (szError)
                free(szError);
        int j = 0;
        while (j != 10)
        {
                DB_sqlite3_exec(mDb, L"SELECT MAX(Type) FROM Products", NULL, NULL,&szError);
                if (szError)
                        free(szError);
                j++;
        }
        sqlite3_close(sqlite3_DB_Product);
}

0 个答案:

没有答案