hirthwork
08.04.2012 20:32 mcabber92FF2E55
нет, вопрос не про chaotic evil. скажите, я правильно понимаю, отступив sizeof(my_struct) от начала блока аллоцированного malloc'ом, я всегда получу указатель на правильно выровненную область, куда можно зафигачить объект?
с чего бы вдруг? о_О
олсо, у меня в мане написано:
The malloc() function allocates size bytes of uninitialized memory. The
allocated space is suitably aligned (after possible pointer coercion) for
storage of any type of object
с чего бы вдруг «что»?
почитал ман? молодец, я тоже читал. а теперь почитай вопрос
с чего бы вдруг прибавление sizeof(my_struct) из невыравненного адреса сделало выравненный?
ну а вдруг sizeof(my_struct) == 5, а у меня там вначале int лежит?
а, ок >_>
Емнип, да. sizeof учитывает padding в конце структуры (если она не помечена как packed)
ок, спасибо
Собсно, вот:
% make test
cc -O2 -pipe -march=native test.c -o test
% ./test
8
% cat test.c
#include <stdio.h>
struct test
{
int a;
char b;
};
int main(void)
{
printf("%d\n", sizeof(struct test));
return 0;
}
угу, с packed я уже тоже поигрался. а потом вспомнил, зачем мне костыль был нужен — я на месте структурки иногда просто указатель хранить хотел. теперь костыль убрал
http://www.gamedev.ru/code/forum/?id=579...