2010-03-10 3 views
0

У меня есть дерево, и я хочу освободить выделенную память, но я столкнулся с проблемой, которую указатель может ссылаться на переменную, которая не динамически распределена, поэтому, как знать, что этот указатель относится к динамическому переменная или нетлокальное и динамическое распределение

+1

В общем, вы не можете. Не используйте такие структуры данных. – 2010-03-10 11:51:27

+0

Серьезно? вы создали дерево только указателей без какой-либо дополнительной информации о том, что они указывают? Почему бы вам просто не создать дерево, где каждый узел указывает на структуру, содержащую дополнительную информацию (включая указатель на то, на что вы указываете в первую очередь) таким образом, что вы могли бы добавить флаг, чтобы отметить «dynamica variable», и, возможно, его размер? –

ответ

0

Это специфическое для компилятора. Вы можете сравнить данный указатель с указателем на локальную переменную. Интерпретация результатов зависит от того, как компилятор реализует кучу и стек. Как правило, для данного компилятора указатель стека всегда меньше (или больше), чем указатель кучи. В любом случае, ЭТО ПЛОХОЙ ДИЗАЙН. Это может не работать, если указатель относится к другой куче (например, выделен в другой Dll).