我有一個信號發出一個std::vector<uint8_t>
其中包含一個數據的負載(一個緩衝區)。從Qt的槽功能中修改參數是否安全?
然後在接收對象我有一個狹槽,它接受一個參數std::vector<uint8_t> data
然後我嘗試將此數據進行解碼。其中一件事我必須做的是去除填充,例如:
void receive_slot(std::vector<uint8_t> data)
{
// Remove padding
if (data.size() > 20)
data.resize(data.size() - 20);
}
現在,我認爲這種說法傳入是一個副本,我可以「做什麼,我想」。但是,做一個大於10字節的重新大小會使我的程序崩潰。我認爲重新調整大小不超過10個字節不會因運氣而崩潰。
因此,我認爲我不能安全地做到這一點,應該首先將它複製到新的數據緩衝區。
任何人都可以啓發我關於此?
你能否精確一點,當它崩潰時究竟發生了什麼?你有什麼信息嗎? – JBL
還有更多的事情要做,但這裏是來自Windows的消息:'程序意外完成。 C:\ local \ projects \ Qt \ Audio \ build-AudioTest-Desktop_Qt_5_2_1_MSVC2010_32bit-Debug \ debug \ AudioTest.exe崩潰了' –
這很薄,你是否執行了其他操作?因爲目前看來完全沒問題。 – JBL