【发布时间】:2012-08-06 11:39:01
【问题描述】:
我有一个从流中反序列化的动态 char 数组。
文件上char *myarray的内容(使用十六进制编辑器):
4F 4B 20 31 32 20 0D 0A 00 00 B4 7F
strlen(myarray) 返回 8,(必须为 12)
【问题讨论】:
-
你能展示反序列化流中数据的代码吗?
-
strlen返回一个字符串的大小,但是你的myarray没有一个字符串,所以strlen在这里没用。 -
我知道尺寸。在一个函数中,我将“myarray”复制到了一个引用参数“char *copymyarray”。但是“copymyarray”有 8_bytes 而不是 12_bytes。
-
你是如何复制的?
strcpy也在第一个 0 字节处停止。这在这里是不够的。memcpy复制您告诉它要复制的字节数。如何确定copymyarray的大小?如果您使用的是sizeof,它将告诉您char*的大小,无论分配了多少或内容是什么。
标签: c++ c deserialization strlen arrays