我正在开发一个项目,我必须传输序列化数据。数据使用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