Вы не можете получить адрес вычисленного значения. Получение адреса работает только для значения, которое уже выделено где-то в стеке.
Представьте себе, что вы говорите, "каков адрес значения, получаемого в результате сложения 1
и 2
вместе?" Для этого нет адреса, потому что это вычисленное значение. Вам нужно иметь переменную или вычисленную ячейку памяти, чтобы иметь возможность напрямую манипулировать памятью.
Исходя из того, как выглядит ваш код, вы хотите выполнить проверку адреса без &
:
if(old_chunk + 1 + old_chunk->size == new_chunk) { }
Это потому, что обе ваши переменные являются указателями на chunk_t
объектов.
Просто убедитесь, что вы знаете, что делаете. Добавление 1
к old_chunk
означает поиск на sizeof(chunk_t)
байт в памяти позже, чем то, на которое указывает old_chunk
. И наоборот, добавление old_chunk->size
означает поиск sizeof(chunk_t) * old_chunk->size
байтов позже.