c - libmpdec mpd_qncopy 内存分配
问题描述
https://www.bytereef.org/mpdecimal/doc/libmpdec/assign-convert.html
mpd_t *mpd_qncopy(const mpd_t *a);
返回指向 a 的新副本的指针,失败时为 NULL。
“新副本”是什么意思?它在哪里分配新指针而没有任何mpd_context_t
给定?
解决方案
“新副本”意味着分配内存并复制十进制对象。完整的实现是:
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
需要提供对象,因为没有对小数执行任何操作。
推荐阅读
- postgresql - 在 postgres 中合并行
- swift - 如何编写一个热文件夹,将文件发送到像 Dropbox 这样的服务器?
- java - 以下代码的可调用命令设计模式解决方案
- angular - 在 Promise 循环中,如何等待请求响应?
- javascript - jQuery 加载方法正在加载多个 div 而不是一个
- python - matplotlib.pyplot:设置轴单位的距离
- c - 如何分配适量的内存(c)
- php - 我如何从 mysql 中的 varchar 列中获取日期
- android - onSaveInstanceState 被调用,但 onCreate 方法中的 savedInstanceState 抛出 null
- javascript - 如何使用循环在 Javascript 中插入一行?