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