在C++中使用带智能指针的memcpy

krcsximq  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(178)

我定义了一个智能指针

auto ptr = make_shared<int[]>(5);

而另一个阵列

int arr[] = {1,2,3,4,5};

我想将arr中的数据复制到ptr,我尝试使用此命令

memcpy(ptr.get(), arr, 5 * sizeof(int))

但当我尝试像这样打印时

for (int i = 0; i < 5; i++) {
        std::cout<<ptr[i]<<std::endl;
    }

我得到

malloc(): corrupted top size

Process finished with exit code 134
(interrupted by signal 6: SIGABRT)

ptr初始化有什么问题吗?

j5fpnvbx

j5fpnvbx1#

下面是您需要的示例(希望如此):

#include <iostream>
#include <memory>
#include <cstring>

int main() {
    // Create a unique_ptr to an int array
    std::unique_ptr<int[]> arr1(new int[5]{ 1, 2, 3, 4, 5 });

    // Create a unique_ptr to an int array
    std::unique_ptr<int[]> arr2(new int[5]);

    // Use memcpy to copy the data from arr1 to arr2
    std::memcpy(arr2.get(), arr1.get(), 5 * sizeof(int));

    // Print the contents of arr2
    for (int i = 0; i < 5; i++) {
        std::cout << arr2[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

相关问题