描述
释放先前由sqlite3_malloc或sqlite3_realloc分配的内存。
C / C ++语法
void sqlite3_free(void*); |
PB语法
SUB sqlite3_free (BYVAL pMem AS DWORD) |
参数
pMem
[in]sqlite3_malloc或sqlite3_realloc返回的指针。
返回值
无返回值。
备注
使用sqlite3_malloc或sqlite3_realloc之前返回的指针调用sqlite3_free将释放该内存,以便可以重复使用该内存。如果使用NULL指针调用,则sqlite3_free函数是无操作的。将NULL指针传递给sqlite3_free是无害的。被释放后,记忆既不应被读取也不能写入。即使读取以前释放的内存也可能导致分段故障或其他严重错误。如果使用非空指针sqlite3_malloc或sqlite3_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);
}
}