0

長さ7バイトのバッファを作成しようとしている次のコードがあり、バッファ内のchar配列とともに整数をネットワークバイトオーダーに入れます。バッファの最後にNull文字を含めるべきではありませsprintf()んだから私はmemcpy()7バイトだけをコピーするために使用しています。ただし、の後に異なるバッファーを取得しているようですmemcpy()

コード:

int num = 1234;
char *dummy = "bla";
int dummy_len = strlen(dummy);
int buffer_len = sizeof(int) + dummy_len;
char *buffer = malloc(buffer_len);
char *temp_buf = malloc(buffer_len);
size_t len = buffer_len;

sprintf(temp_buf, "%d%s",htonl(num),dummy); //preparing the temp_buf
memmove(buffer, temp_buf, len); 
printf("sizeof(temp_buf) = %d and sizeof(buffer) = %d\n",sizeof(temp_buf), sizeof(buffer));
printf("printing buffer = %s and temp_buf = %s\n", buffer,temp_buf);

次の出力が得られます。

sizeof(temp_buf) = 4 and sizeof(buffer) = 4
printing buffer = -771489 and temp_buf = -771489792bla
4

2 に答える 2