我有一个三维数组int32_t x[1024][4][256]
。我需要将数组的所有元素复制到另一个相同类型和大小的数组int32_t y[1024][4][256]
中。
我可以使用memcpy(y, x, sizeof(x));
吗?
之后,我能像访问x
数组一样访问y
数组的元素吗?
我有一个三维数组int32_t x[1024][4][256]
。我需要将数组的所有元素复制到另一个相同类型和大小的数组int32_t y[1024][4][256]
中。
我可以使用memcpy(y, x, sizeof(x));
吗?
之后,我能像访问x
数组一样访问y
数组的元素吗?
我能使用
memcpy(y, x, sizeof(x))
吗?
可以。
之后我能像访问
x
数组一样访问y
数组的元素吗?
可以。
需要注意的是,如果您动态分配了数组(例如使用malloc()
),则此方法将不起作用。在这种情况下,sizeof()
将不再给出数组的大小(它将给出指针的大小),您需要自己跟踪数组维度。
memcpy()
只在 C++ 中使用 POD 类型(当然包括int32_t
)时才是安全的。因为更复杂的类型不能通过这种方式进行复制,所以必须使用其他方法,例如std::copy()
来完成工作。如果想要一直保持代码的一致性和清晰性,始终使用std::copy()
将有助于防止意外误用memcpy()
。 - Jonathan Grynspan