【发布时间】:2017-02-03 00:58:50
【问题描述】:
template<typename T>
static T *anydup(const T *src, size_t len) {
T *ptr = malloc(len * sizeof(T));
memcpy(ptr, src, (len * sizeof(T)));
return ptr;
}
这样合适吗?使用 int、long 等时,我可以期待任何错误吗?我对泛型编程非常陌生,正在努力学习更多。
【问题讨论】:
-
memcpy通常不是创建对象的有效方法。所以不,不要这样做。请改用std::vector<T>。 -
malloc也不是实例化对象的有效方法。 -
复制一些
src的正确方法是auto src2{src};。 -
您可以添加
static_assert(std::is_trivially_copyable<T>::value, "T must be trivially copyable"); -
使用矢量,它看起来像
std::vector<int> vec = otherVec
标签: c++ templates memcpy strdup