c++ - 内存操作 - 我做错了什么?

标签 c++ arrays memory character memcpy

是的,所以我正在玩弄内存移动数据。我在这里遇到了麻烦。 我做错了什么?我已经考虑了空终止符,但它仍然没有输出我期望的结果。

char buff[34] = "I will not do anything like that.";
char * protocol = "abcdefghi";

char data[44];

memcpy(data, protocol, 10);
memcpy(data + 9, buff, 34);

cout << data << endl; //abcdefghiI will not do anything like that.
cout << strlen(data) << endl; // 42

char poin[10];
memcpy(poin, data, 10);

cout << poin << endl; //abcdefghiI╠╠╠╠╠╠╠╠╠╠abcdefghiI will not do anything like that.

对于最后一次计算,我只期待 abcdefghi,但结果如上所示。 任何帮助表示赞赏,谢谢!

最佳答案

point 不是以 '\0' 结尾的字符串。您在这里用 'I' 覆盖了第一个 '\0':

memcpy(data + 9, buff, 34);

关于c++ - 内存操作 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438244/

相关文章:

memory - CUDA cudaMemcpy : invalid argument

python - 通过迭代输入的每个文件来制作 zip 的内存副本

c++ - 如何使用 XS 连接 C++ 和 Perl?

c - 用C在内存中查找程序代码

c++ - 在类构造函数中使用重载>>运算符对其进行初始化

arrays - 从 powershell 中的管道属性获取值(value)

javascript - 将 Ruby 数组从数据库查询返回到 javascript

javascript - Lodash 过滤嵌套对象

c++ - 跟踪 C 中的整数列表,并从列表中采样

c++ - 在 C++ 中替换不区分大小写的子字符串