Я реализовал зубчатый многомерный массив, выделив пространство для промежуточных массивов , а также фактические элементы в большой блок. Во время работы над этим я решил, что на всякий случай должен был учитывать выравнивание хранящихся элементов. Но я не уверен, нужна ли проверка безопасности, поэтому я пришел спросить: будет ли размер указателя поддерживать выравнивание для любого другого типа?C указатели могут быть выровнены с любым другим типом данных?
Короче говоря: Учитывая пространство непрерывной памяти из вызова таНос, который выглядит как:
| ARRAY OF POINTERS | ALIGN PADDING | ARRAY OF AN ARBITRARY ELEMENT TYPE |
ли мне нужно отступы здесь, когда первый массив из указателей? Существуют ли случаи, когда требуется заполнить?
'Будет ли размер указателя поддерживать выравнивание для любого другого типа? Это правда в большинстве случаев, но мне любопытно, гарантировано ли оно стандартом C или нет. +1 – ikh
У вас может быть указатель на 32 бита, при сохранении значений 64 бит. С нечетным количеством значений требуется отступы. – Macmade
Вы не должны «нуждаться» в дополнении к тому, что требуется для выравнивания по размеру слова вашего процессора. Вы можете получить небольшое ускорение, совместив вещи на более широкой границе. –