-Mik- (08.09.2006 17:21, просмотров: 2851)
Как выделяет память под строки компилятор IAR ARM Неожиданно для себя заметил, что при создании такого массива:
char* const strings[] = {"abcd", "efgh", "ijkl" };
компилятор IAR ARM 4.40 добавляет к какждой строке нулевые байты до границы слова (4 байта). Поэтому вместо того, чтобы занимать в памяти 5 байт, каждая строка занимает 8 байт. При этом если сделать так:
char const strings[][5] = {"abcd", "efgh", "ijkl" };
то каждая строка занимает 5 байт, как и положено.
Вопрос: зачем он выравнивает строки до границы слова? Ведь если в программе много подобных массивов, например, шрифтов, то потери памяти могут быть очень заметными. Можно ли его образумить? Чтение документации пока ни к чему не привело.