0

我有

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;
}

**buf = len;这段代码,如果我在 len 中有 7个字节,则只有 1 个字节被覆盖,而 4 应该是,因为 sizeof(DWORD) = 4

4

4 回答 4

1

使固定:

DWORD *tmpptr(*buf);
*tmpptr = len;

C++ 会自动将 len 转换为 char,因为它就是这样*buf

于 2012-03-09T15:56:20.087 回答
1

作为buf一个char ****buf是一个char。它只能保存一个字节。因此,只写入一个字节。

于 2012-03-09T15:57:21.587 回答
0

你有参数

char** buf

这意味着这**buf是一个字符,很可能是一个字节。

于 2012-03-09T15:57:55.920 回答
0

1 个字节被覆盖,因为目标类型是 char(类型**buf是 char)。这是对的。但在我看来,这个表达*buf += sizeof(len)没有任何意义。

于 2012-03-09T16:00:01.100 回答