Пытаюсь воспроизвести subj (архитектура IA64)-- надо для отладки.
ммаплю кусок памяти, потом отдаю его сдвинутым на некое нечетное число
чаров (три, например). Впихиваю туда int -- по идее, должно
заругаться на unaligned access. Нифига, все работает!
char *c=(char*)mmap(0,12,PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
int *p=(int*)(c+3);
*p=12345;
fprintf(stderr,"%p: %d \n",p,*p);
p[1]=67890;
fprintf(stderr,"%p: %d \n",p+1,p[1]);
0x2000000000040003: 12345
0x2000000000040007: 67890
И icc, и gcc компилил, и все комбинации сдвигов/типов пробовал...
Почему?
Форум —
Development

