有没有办法从列中获取blob并将其所有权传递给其他人?当我从sqlite3表中获取blob(或其他类型的数据)时,我想避免额外的分配和memcpy。
根据文件:
返回的指针有效,直到发生类型转换为止 如上所述,或直到sqlite3_step()或sqlite3_reset()或 调用sqlite3_finalize()。用于保存字符串的内存空间 和BLOB自动释放。不要传递返回的指针 从sqlite3_column_blob(),sqlite3_column_text()等转换成 sqlite3_free()。
例如: 我在sqlite db中将位图对象存储为blob。当我在这个名为setPixels的位图上有方法时,它将指针的所有权传递给该位图。在当前的解决方案中,我为每个位图分配两次内存。一次从db中使用sqlite取出,第二次将新指针传递给位图时。
答案 0 :(得分:0)
sqlite3_column_blob
返回的缓冲区是内部的;没有改变其所有权的机制。
如果您的blob确实太大以至于缓冲区管理对性能有影响,您可以Open A BLOB For Incremental I/O和Read Data From A BLOB Incrementally。