【发布时间】:2013-10-20 23:05:51
【问题描述】:
我有以下代码,我试图在其中创建一个长度为 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
【问题讨论】:
标签: c malloc buffer printf memmove