我有
typedef unsigned int DWORD;
void write_str(string str, char** buf) {
DWORD len = str.size();
**buf = len;
*buf += sizeof(len);
memcpy(*buf, str.c_str(), len);
*buf += len;
}
这段代码,如果我在len中有7,则只有1个字节被覆盖在**buf = len;
中,而4应该是,因为(DWORD)的大小=4
由于buf
是char **
,**buf
是char
。它只能容纳一个字节。因此,只向其中写入一个字节。
修复:
DWORD *tmpptr(*buf);
*tmpptr = len;
C++自动将len转换为char,因为*buf
就是这样。
您有参数
char** buf
这意味着**buf
是一个字符,很可能是一个单字节。
1个字节被覆盖,因为目标类型是char(**buf
的类型是char)。这是正确的。但在我看来,*buf += sizeof(len)
这个词没有任何意义。