Это основной вопрос, но я не смог найти окончательного ответа. Надеюсь, кто-то может пролить свет.Площадь памяти, занимаемая массивом
Я хочу знать, сколько пространства памяти занимает один массив.
Многочисленные массивы разных типов, но с тем же объединенным размером байта занимают одинаковый объем памяти?
Является ли массив занимающим то же пространство памяти, что и несколько массивов с одинаковым размером?
Некоторые примеры:
(на моей системе 8051 микроконтроллер, char = 1 byte;
int = 2 bytes ;
float = 4 bytes;
)
//case 1
char array_nr1[40];
//case 2
char array_nr1[10];
char array_nr2[10];
char array_nr3[10];
char array_nr4[10];
//case 3
int array_nr1[10];
int array_nr2[10];
//case 4
float array_nr1[10];
//case 5
char array_nr1[10];
int array_nr2[5];
float array_nr3[5];
Все ли 5 случаев принимать один и тот же объем памяти (40 байт)? Есть ли другие данные, которые хранятся в памяти (например, базовый адрес массива)
Спасибо.
Без каких-либо 'padding',' optim' и 'packing', теоретически, да. –
Что значит «случай» «взять память»? Для каждого объекта требуется память, если у него есть память, но требуется ли какая-либо память для этого, зависит от того, что вы делаете. Если объект никогда не упоминается, компилятор может выбрать не выделять для него какое-либо хранилище. Единственная разумная вещь, о которой вы можете спросить, это * размер * каждого объекта. –
Вы уверены, что правильно исчисляете? int обычно занимает 4 байта пространства, поэтому два массива из каждых 10 int будут принимать 80 байт, а не 40 –