私はメモリ内に二つの変数のアドレスを比較しようとしています:ここで確認と異なる型の変数のためのメモリアドレスを比較する
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文でchunk_tとしてold_chunk-> sizeをtypecaseしてコンパイラから "non-scalar type次の式
old_chunk + 1 + old_chunk->size
は左辺値ではないので、あなたが&
オペレータと、そのアドレスを取ることができない」
new_chunkを次のように宣言する必要がありますか? new_chunkまたは* new_chunk? –
私のせいで、コード内にポインタが宣言されましたが、書き直したときにタイプミスがありました。ありがとう –
'chunk_t'オブジェクトへのポインタのアドレス、または' chunk_t'オブジェクト自体のアドレスを比較しますか?大きな違いがあります。 – Irfy