LINUX.ORG.RU

История изменений

Исправление cumvillain, (текущая версия) :

Ты можешь сделать next = (void*)(((char*)ptr)+1);.

И это, кстати, не делает адресацию линейной :D

Потому что здесь ты используешь тот факт, что арифметика указателей для char * дает тебе сдвиг на один байт. Лулз в том, что это все ещё арифметика указателей, и ptr может быть хоть структурой с сотней полей, а ptr + 1 может оказаться меньшим физическим адресом. Да, так разумеется никто не делает, но абстракция арифметики указателей это позволяет. Потому что C поддерживает не только линейную память :D

Исправление cumvillain, :

Ты можешь сделать next = (void*)(((char*)ptr)+1);.

И это, кстати, не делает адресацию линейной :D

Потому что здесь ты используешь тот факт, что арифметика указателей для char * дает тебе сдвиг на один байт. Лулз в том, что это все ещё арифметика указателей, и ptr может быть хоть структурой с сотней полей.

Исходная версия cumvillain, :

Ты можешь сделать next = (void*)(((char*)ptr)+1);.

И это, кстати, не делает адресацию линейной :D

Потому что здесь ты используешь тот факт, что арифметика указателей на char дает тебе сдвиг на один байт. Лулз в том, что это все ещё арифметика указателей, и ptr может быть хоть структурой с сотней полей.