C Массив копирования - PullRequest
       30

C Массив копирования

0 голосов
/ 19 марта 2019

Я сделал себе массив:

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);

Как правильно это сделать?

1 Ответ

1 голос
/ 19 марта 2019

sizeof оператор «работает» только для статически объявленных массивов (например: double my_array[10]). В противном случае sizeof возвращает размер указателя, а это не то, что вам нужно.

Чтобы правильно скопировать динамически размещенный массив, вам нужно знать размер этого массива. В вашем случае это input_array_size:

memcpy(output_array_pointer, input_array_pointer, input_array_size * sizeof(double));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...