【发布时间】:2013-03-20 13:40:11
【问题描述】:
我正在处理一个必须传输序列化数据的项目。数据使用boost 框架进行序列化,然后存储到字符串流中,最后存储到std::string。为了传输数据,数据(存储为 char*,给定!)和字符串的长度都被存储并且可以在目的地被提取。但是,在尝试提取数据时,我只得到空字符串。到目前为止我尝试过的方法是:
C[i]=*new std::string(content, getDataChunk(), content.getDataLength());
或
C[i].append(content.getDataChunk(), content.getDataLength());
而 std::string *C=new std::string[K], i
char* p = content.getDataChunk();
int l = content.getDataLength();
for (int j = 0; j < l; j++) {
C[i].insert(j, p[j], 1);
}
(这会在一开始就引发异常 - 我猜是因为 NULL 值!?)
显然,strcpy() 不起作用,因为它使用 char* 作为目的地,该目的地再次以 NULL 结尾...
你们中有人知道如何解决这个问题吗?我希望我不是在问一些每天都会被问到的东西,但是在大量的答案中,很难消除这个机会;)
非常感谢您的任何提示 - TIA!
干杯, 亚历克斯
【问题讨论】:
-
如果你保存表达式
* new something的值,你将会有内存泄漏。 -
C[i]=*new std::string...是内存泄漏。将其更改为C[i]=std::string... -
@JoachimPileborg 对,谢谢!我猜它使用 C[i]= std::string(...);,对吗?
-
谢谢@DrewDormann - 看来我太慢了:)