使用memcopy
时,它只是复制数组中的对象还是复制对象的内存地址并将其放在新数组中?
如果没有办法复制数组中对象的地址?
以下是数组定义:
private:
Node<T>* m_data;
long m_size;
bool m_asc;
Node<T>* m_curr;
我有一个插入m_data
的方法,但有时m_data
需要扩展,然后复制到临时数组。问题在于,Node类定义(如下所示)通过保存指针来连接数组中的连续元素。如果我将一个列表的元素复制到另一个列表,则会更改其内存地址,这会导致使用未反映在数组元素中的指针进行更改。有办法解决这个问题吗?
Node<T>* m_next; // pointer to successor element.
Node<T>* m_prev; // pointer to predecessor element.
答案 0 :(得分:1)
从历史上看,memcpy()仅用于复制内存块,而没有任何假设“内容字节本质上应该是什么”。所以,经验法则: