我为自己创建了一个数组:
double* input_array_pointer;
input_array_pointer = (double*)malloc(input_array_size * sizeof(double));
fill_array(input_array);
现在我的数组充满了双打。
我需要制作输出数组,该数组需要是输入数组的副本,但我得到的只是指向输入数组的指针。 (因此,我在输出数组上所做的所有工作(例如更改某些数字)都将应用于输入数组。)
这是我做错的方法:
double* output_array_pointer;
output_array_pointer = (double*)malloc(array_size * sizeof(double))/*memory allocation using malloc*/
memcpy(output_array_pointer, input_array_pointer, (sizeof(input_array_pointer))+1);
正确的方法是什么?
答案 0 :(得分:1)
sizeof
操作符仅在静态声明的数组(例如:double my_array[10]
)上“起作用”。否则,sizeof
返回指针的大小,这不是您想要的大小。
要正确复制动态分配的阵列,您需要知道该阵列的大小。您的情况是input_array_size
:
memcpy(output_array_pointer, input_array_pointer, input_array_size * sizeof(double));