Связанный список, содержащий другие связанные списки & free

У меня есть общая реализация связанного списка со структурой узла, содержащей void * для данных и структурой списка, которая содержит ссылку на заголовок. Теперь вот моя проблема: узел в связанном списке может содержать ссылку на другой связанный список через его void *. Это вызывает утечку памяти, когда я освобождаю большой список, содержащий меньшие списки. Так что мне интересно, есть ли способ проверить, указывает ли void * на другой список, поэтому я следую и освобождаю его также или только для данных.

Если я добавлю ключ в начало моей структуры, это магическое число, которое я можно проверить, разыменовав void *, и выяснить, что это список?

РЕДАКТИРОВАТЬ: вызывающие абоненты не t вставлять меньшие списки, которые они вставляются моими функциями. Я не хочу, чтобы вызывающие абоненты имели дело с передачей нескольких списков только тому, на который они указывают.

8
задан templatetypedef 16 February 2012 в 20:20
поделиться