недавно узнал что операции 1 и 3 будут занимать разное время:
0: char* data=(char*)malloc(20);
1: ((unsigned int*)data)[0]=1;
2: data++;
3: ((unsigned int*)data)[0]=1;
по причине того что после data++ указатель перестанет быть выравнен по dword и процессору будет плохо. и вообще, что часть процессоров (не i386 которые) не смогут исполнить эту операцию.
вобщем много думал, опустились руки и начал депрессовать (поскольку в качестве хобби пытаюсь писать на С/С++ достаточно большой блок кода и там идёт активная работа с байтами и хранением их на диске и война за каждый байт и за скорость).
задумался также о сабже и о том что если я даже выравнюю по 32бита всё то всё равно это с большой вероятностью хрен куда перенесёшь.
вобщем даже не знаю что делать.
вдоль и забухать - не предлагать. )