我正在開發一個項目,我必須傳輸序列化數據。數據使用boost框架進行序列化,然後存儲到一個stringstream中,最後存入一個std :: string。爲了傳輸數據,數據(存儲爲char *,給出的!)和字符串的長度都被存儲並可以在目的地提取。但是,當試圖提取數據時,我只收到空字符串。我已經嘗試過的方式到目前爲止是:char *(包含null值)std :: string知道長度
C[i]=*new std::string(content, getDataChunk(), content.getDataLength());
或
C[i].append(content.getDataChunk(), content.getDataLength());
而的std :: string * C =新的std :: string [K],我< K.
char* p = content.getDataChunk();
int l = content.getDataLength();
for (int j = 0; j < l; j++) {
C[i].insert(j, p[j], 1);
}
(這引發了一個異常權在開始 - 我猜是因爲NULL值(S)!?)的
顯然的strcpy(),因爲這是不行的我們es char *作爲目標,它再次以NULL結尾...
有沒有人對如何解決這個問題有想法?我希望我不是每天都會問一些問題,但是在很多答案中,很難消除這種機會;)
任何提示都非常感謝 - TIA!
歡呼聲, 亞歷
如果你保存了表達式'* new something'的值,你將會發生內存泄漏。 – 2013-03-20 13:41:48
'C [i] = * new std :: string ...'是內存泄漏。將其更改爲'C [i] = std :: string ...' – 2013-03-20 13:42:14
@JoachimPileborg吧,謝謝!我想它使用C [i] = std :: string(...),正確嗎? – astriffe 2013-03-20 13:47:09