2017-06-29 244 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

是的,這工作。謝謝 –