c++ - 如何复制 C++ 指针数据?
问题描述
我有一个指向 A 类型对象的指针:
一个*一个;
它是由初始化函数中的参数设置的,但是我无法知道是否使用了从 A 派生的类型,并且我无法测试所有可能性(无论如何也不应该) .
我需要制作 a 指向的对象的精确副本,并让新的指针 b 指向新的重复对象。它必须复制所有数据,而不仅仅是指针本身,因为我以后更改 *b 时不能覆盖原始数据。我可以试试这个:
A* a = param_a;
温度 = *a;
A* b = 新 A();
*b = 温度;
但是我担心当我尝试将数据从 *a 存储到 temp 时,如果它实际上没有实例化为 A,那么将没有足够的空间来保存它。然后当我将 *b 实例化为 A,然后用 temp 替换它时,再次没有足够的空间。我怎样才能做到这一点?
解决方案
使用 memcpy 它将 num 个字节的值从源指向的位置直接复制到目标指向的内存块。参考
memcpy(p2, p1, 100 * sizeof(int));
当然你可以这样做
int A = 4;
int* pointer1 = &A;
int* pointer2 = pointer1;