C++ 执行memcpy命令时出错-第二个参数
有人能帮我解释一下这个memcpy语法吗。我假设在const void*测试中,由于运行时代码崩溃,有一个错误我无法解释C++ 执行memcpy命令时出错-第二个参数,c++,sqlite,C++,Sqlite,有人能帮我解释一下这个memcpy语法吗。我假设在const void*测试中,由于运行时代码崩溃,有一个错误我无法解释 struct tHistoryRow { std::vector<unsigned char> blob; … … … }; tHistoryRow tempHistoryRow; unsigned int valueBlobSize = sqlite3_column_bytes(pStmt, SQLITE_HISTORYDB_INDEX_VA
struct tHistoryRow
{
std::vector<unsigned char> blob;
… … …
};
tHistoryRow tempHistoryRow;
unsigned int valueBlobSize = sqlite3_column_bytes(pStmt, SQLITE_HISTORYDB_INDEX_VALUE);
unsigned ssize = tempHistoryRow.blob.size();
tempHistoryRow.blob.resize(ssize + valueBlobSize);
const void * test = sqlite3_column_blob(pStmt, SQLITE_HISTORYDB_INDEX_VALUE);
std::memcpy(&tempHistoryRow.blob[ssize - valueBlobSize], test, valueBlobSize);
以上代码仅供参考
感谢rG从逻辑角度来看,索引应该是
std::memcpy(&tempHistoryRow.blob[ssize], test, valueBlobSize);
因为我假设,您希望将数据附加到向量对象。为什么不在运行时查询?代码崩溃意味着您的语法正常,但可能存在一些内存冲突&tempHistoryRow.blob[ssize-valueBlobSize]看起来您的计算是一个负索引,它围绕着一个非常大的索引。看起来您真正需要的是std::vector.std::memcpy&tempHistoryRow.blob[ssize-valueBlobSize]、test、valueBlobSize;-我可能是在暗中胡乱捅了一刀,但这不应该是[ssize],因为你还没有用新的blob数据更新它吗?@NathanOliver@Chris Turner不明白你的意思。请再解释一下。谢谢