2017-06-29 245 views
-3

有人可以帮我解决这个问题memcpy语法。我想在const void * test中,有一个错误,我无法解释由于代码在运行时崩溃。执行memcpy命令时出错 - 第二个参数

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

+0

为什么不咨询[参考文档](http://en.cppreference.com/w/cpp/string/byte/memcpy)? –

+0

运行时代码崩溃意味着你的语法正常,但可能有一些内存违规 –

+0

'&tempHistoryRow.blob [ssize-valueBlobSize]'看起来像你计算一个负指数,它包装到一个非常大的指数。看起来你真正需要的是来自'std :: vector'的'data'成员函数。 – NathanOliver

回答

2

从逻辑上看,该指数应该是

std::memcpy(&tempHistoryRow.blob[ssize], test, valueBlobSize); 

,因为我认为,要数据追加到矢量对象。

+0

是的,这工作。谢谢 –