«Свежая копия» означает выделение памяти и копирование десятичного объекта.Полная реализация :
mpd_t *
mpd_qncopy(const mpd_t *a)
{
mpd_t *result;
if ((result = mpd_qnew_size(a->len)) == NULL) {
return NULL;
}
memcpy(result->data, a->data, a->len * (sizeof *result->data));
mpd_copy_flags(result, a);
result->exp = a->exp;
result->digits = a->digits;
result->len = a->len;
return result;
}
Непонятно, почему вы думаете, что необходимо предоставить объект mpd_context_t
, поскольку над десятичной запятой не выполняется никаких операций.