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;sizeof(DWORD)= 4であるため、このコード、つまりlenに7があり、4が必要な場合は、1バイトだけが上書きされます。

4

4 に答える 4

1

修理:

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

C++ は自動的に len を char にキャストし*bufます。

于 2012-03-09T15:56:20.087 に答える
1

のようbufchar ****bufですchar。保持できるのは 1 バイトのみです。したがって、1 バイトだけが書き込まれます。

于 2012-03-09T15:57:21.587 に答える
0

あなたはパラメータを持っています

char** buf

**bufこれは、1 バイトである可能性が非常に高い char であることを意味します。

于 2012-03-09T15:57:55.920 に答える
0

書き込み先の型がchar(の型**bufはchar)なので1バイト上書きされます。正解です。しかし、その表現*buf += sizeof(len)は私の意見では意味がありません。

于 2012-03-09T16:00:01.100 に答える