メモリ内の 2 つの変数のアドレスを比較しようとしています。
chunk_t *old_chunk, *new_chunk;
if(&(old_chunk + 1 + old_chunk->size) == &new_chunk) { }
以下は、chunk_t のプロトタイプです。
typedef struct chunk_tag {
struct chunk_tag *next; /* next node in list */
int size; /* size of node in units, not bytes */
} chunk_t;
「単項 '&' オペランドとして左辺値が必要」という if ステートメントでコンパイラ エラーが発生します。
int old_chunk->size と chunk_t old_chunk を追加していたからだと思ったので、if 文で old_chunk->size を chunk_t として型変換すると、コンパイラから「非スカラー型への変換が要求されました」と言われました。