sqlite3_value *sqlite3_value_dup(const sqlite3_value*); void sqlite3_value_free(sqlite3_value*);
The sqlite3_value_dup(V) interface makes a copy of the sqlite3_value object D and returns a pointer to that copy. The sqlite3_value returned is a protected sqlite3_value object even if the input is not. The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a memory allocation fails. If V is a pointer value, then the result of sqlite3_value_dup(V) is a NULL value.
The sqlite3_value_free(V) interface frees an sqlite3_value object previously obtained from sqlite3_value_dup(). If V is a NULL pointer then sqlite3_value_free(V) is a harmless no-op.