勇芳软件工作室.汉化:  SQLite3 API Functions > Memory Allocation >

sqlite3_free

Previous pageReturn to chapter overviewNext page

描述

 

释放先前由sqlite3_mallocsqlite3_realloc分配的内存。

 

C / C ++语法

 

void sqlite3_free(void*);

 

PB语法

 

SUB sqlite3_free (BYVAL pMem AS DWORD)

 

参数

 

pMem

 

[in]sqlite3_mallocsqlite3_realloc返回的指针。

 

返回值

 

无返回值。

 

备注

 

使用sqlite3_mallocsqlite3_realloc之前返回的指针调用sqlite3_free将释放该内存,以便可以重复使用该内存。如果使用NULL指针调用,则sqlite3_free函数是无操作的。将NULL指针传递给sqlite3_free是无害的。被释放后,记忆既不应被读取也不能写入。即使读取以前释放的内存也可能导致分段故障或其他严重错误。如果使用非空指针sqlite3_mallocsqlite3_realloc获取sqlite3_free,则可能会导致内存损坏,分段错误或其他严重错误。

 

C ++实现代码

 

/*

** Free memory previously obtained from sqlite3Malloc().

*/

SQLITE_API void sqlite3_free(void *p){

if( p==0 ) return;  /* IMP: R-49053-54554 */

assert( sqlite3MemdebugNoType(p, MEMTYPE_DB) );

assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );

if( sqlite3GlobalConfig.bMemstat ){

  sqlite3_mutex_enter(mem0.mutex);

  sqlite3StatusAdd(SQLITE_STATUS_MEMORY_USED, -sqlite3MallocSize(p));

  sqlite3StatusAdd(SQLITE_STATUS_MALLOC_COUNT, -1);

  sqlite3GlobalConfig.m.xFree(p);

  sqlite3_mutex_leave(mem0.mutex);

}else{

  sqlite3GlobalConfig.m.xFree(p);

}

}