首页 > 解决方案 > 如何复制 C++ 指针数据?

问题描述

我有一个指向 A 类型对象的指针:

一个*一个;

它是由初始化函数中的参数设置的,但是我无法知道是否使用了从 A 派生的类型,并且我无法测试所有可能性(无论如何也不应该) .

我需要制作 a 指向的对象的精确副本,并让新的指针 b 指向新的重复对象。它必须复制所有数据,而不仅仅是指针本身,因为我以后更改 *b 时不能覆盖原始数据。我可以试试这个:

A* a = param_a;

温度 = *a;

A* b = 新 A();

*b = 温度;

但是我担心当我尝试将数据从 *a 存储到 temp 时,如果它实际上没有实例化为 A,那么将没有足够的空间来保存它。然后当我将 *b 实例化为 A,然后用 temp 替换它时,再次没有足够的空间。我怎样才能做到这一点?

标签: c++pointerscopy

解决方案


使用 memcpy 它将 num 个字节的值从源指向的位置直接复制到目标指向的内存块。参考

memcpy(p2, p1, 100 * sizeof(int));

当然你可以这样做

int A = 4;
int* pointer1 = &A;
int* pointer2 = pointer1;

推荐阅读