勇芳软件工作室.汉化:  SQLite3 API Functions > Database Connection >

sqlite3_db_release_memory

Previous pageReturn to chapter overviewNext page

描述

 

尝试从指定的数据库连接释放尽可能多的堆内存。与sqlite3_release_memory不同,即使省略了SQLITE_ENABLE_MEMORY_MANAGEMENT编译时选项,此函数也会生效。

 

C / C ++语法

 

int sqlite3_db_release_memory(sqlite3*);

 

PB语法

 

FUNCTION sqlite3_db_release_memory ( _

BYVAL hDbc AS DWORD _

) AS LONG

 

参数

 

pDb

 

[in]数据库连接句柄。必须是从sqlite3_opensqlite3_open16sqlite3_open_v2获取的sqlite3对象指针。 数据库连接不能关闭。

 

返回值

 

字节数释放。

 

C ++实现代码

 

/*

** Free up as much memory as we can from the given database

** connection.

*/

SQLITE_API int sqlite3_db_release_memory(sqlite3 *db){

int i;

sqlite3_mutex_enter(db->mutex);

sqlite3BtreeEnterAll(db);

for(i=0; i<db->nDb; i++){

  Btree *pBt = db->aDb[i].pBt;

  if( pBt ){

    Pager *pPager = sqlite3BtreePager(pBt);

    sqlite3PagerShrink(pPager);

  }

}

sqlite3BtreeLeaveAll(db);

sqlite3_mutex_leave(db->mutex);

return SQLITE_OK;

}