Я слышал, что malloc() выравнивает память по типу, который выделяется. Например, из книги "Понимание и использование указателей C":
Выделенная память будет выровнена в соответствии с типом данных указателя. Например, четырехбайтовое целое будет выделено на границе адреса, равномерно делимой на четыре.
Если я последую, это означает, что
int *integer=malloc(sizeof(int)); будет распределяться по границе адреса, равномерно делимой на четыре. Даже без литья (int *) на malloc.
Я работал на чат-сервере; Я читал о аналогичном эффекте с struct s.
И я должен спросить: логично, почему имеет значение, на чем делится граница адреса? Что не так с распределением группы памяти на мелодию n*sizeof(int) с использованием целого числа по адресу 129?
Я знаю, как работает арифметика указателей *(integer+1), но я не могу понять важность границ...