提问人:El ayoub 提问时间:8/24/2023 最后编辑:Some programmer dudeEl ayoub 更新时间:8/24/2023 访问量:29
在 C++ 中复制动态数组中的静态数组
copy static array in a dynamic array in c++
问:
此代码的主要目标是将部分字符串从 myArray 复制到 neuArray,然后将复制的字符串从 neuArray 输出到控制台。 代码正常工作,但不是 100%,因为我收到以下报告:在位置 0xFFFFFFFFFFFF 读取时访问冲突。
有人可以帮忙吗?提前致谢
string myArray[5];
const int len = (sizeof(myArray) / sizeof(myArray[0]));
myArray[0] = ausgabe; // die ausgabe ist ein binäre string 0101
const int x = 5;
const int y = 1;
string neuArray[x + y] = {};
memcpy(neuArray, myArray, len * (sizeof(string)));
for (int i = 0; i < x + y; i++) {
cout << neuArray[i] <<endl;}
答:
-1赞
Some programmer dude
8/24/2023
#1
您显示的代码的问题在于您使用了 C 函数。它将创建一个浅层字节复制,它不会像 C++ 预期的那样调用对象复制语义。memcpy
这意味着当您尝试访问“复制”对象时,您将有未定义的行为。
您应该改用 std::copy:
std::copy(std::begin(myArray), std::end(myArray), std::begin(neuArray));
或者,当您明确需要动态数组时,请停止使用固定大小的数组,因此应该改用。std::vector
评论
0赞
El ayoub
8/24/2023
什么时候可以在 C++ 中使用函数 memcpy() ??
0赞
Some programmer dude
8/24/2023
@Elayoub 为了安全起见:从不。一旦你获得了更多的经验,你就会知道什么时候可能。
评论