Просто подумайте о проблеме, как о массиве Foo
.
#define MAX_NUM 64
Foo Stamps[MAX_NUM];
И теперь вы хотите скопировать Foo
.
unsigned char *DynArr = new unsigned char[sizeof(Foo)];
std::memcpy(DynArr, &Stamps[row], sizeof(Stamps[row]));
Это будет работать«для любого типа Foo
. В вашем случае Foo
- это трехмерный массив.
typedef unsigned char Foo[16][16][3];
@ ответ eeroika работает правильно, потому что когда Foo
является массивом, его экземпляр будет разрушатьсяк значению, равному адресу его первого элемента. Для массивов адрес его первого элемента совпадает с адресом самого массива. Однако, если бы Foo
был типом, не являющимся массивом, вам нужно было бы использовать оператор address-of.