私はリストを解放したいが、私は間違っていたと思う。削除しても到達可能なメモリブロックがあるからだ。ランダムなポインタでリンクリストを削除するにはどうしたらいいですか?
typedef struct TEmployee
{
struct TEmployee * m_Next;
struct TEmployee * m_Bak;//random pointer
char * m_Name;
} TEMPLOYEE;
void freeList (TEMPLOYEE * src) {
while (src) {
TEmployee * tmp = src ;
free(src->m_Name);
src = src -> m_Next ;
free (tmp) ;
}
}
_あなたがこれを証明ましたか_「私は到達可能なメモリ・ブロックを持っています」 ? – user0042
私はデバッガを使って確認しましたが、わかりません。 –
'free()'が呼び出された後、これらのポインタを間接参照することは_undefined behavior_です。 – user0042