在一般情况下,是的,会有问题.双方memcpy并memmove都没有进一步的语义位运算.这可能不足以移动对象*,显然不足以复制.
在复制的情况下,它将断开,因为多个对象将引用相同的动态分配的内存,并且多个析构函数将尝试释放它.需要注意的是像解决方案shared_ptr将不利于在这里,作为共享所有权是部分进一步的语义是memcpy/ memmove不提供.
对于移动,在某些情况下,根据类型,您可能会使用它.但是如果对象持有对被移动元素的指针/引用(包括自引用),它将无法工作,因为指针将被按位复制(同样,没有复制/移动的进一步语义)并将引用旧位置.
一般答案仍然是相同的:不要.
*不要在确切的C++ 11意义上移动到这里.我已经看到了标准库容器的一个实现,它使用特殊的标签来启用移动对象,同时通过使用增长缓冲区memcpy,但它需要在存储的类型中显式注释,标记对象在放置对象后可以安全地移动memcpy在没有调用任何析构函数的情况下丢弃旧缓冲区的新缓冲区(C++ 11 移动需要将对象保持在可破坏状态,这不能通过此hack实现)