我不知道为什么但我的代码中有一些内存泄漏。 我试着用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);
}