2010-03-10 49 views
0

我有一棵树,我想释放分配的内存,但是我面临一个问题,即一个指针可能指向一个不是动态分配的变量,所以如何知道这个指针是指动态的一个变量与否本地和动态分配

+1

一般来说,你不能。不要实现那样的数据结构。 – 2010-03-10 11:51:27

+0

认真吗?你创建了一个只是指针的树,没有任何关于它们指向的额外信息?为什么你不能创建树,其中每个节点指向一个包含额外信息的结构(包括首先指向的任何指针),这样你可以添加一个标记来记录“dynamica变量”也许它的大小呢? – 2010-03-10 11:59:51

回答

0

这是编译器特定的。你可以比较给定的指针和局部变量的指针。结果解释取决于编译器实现堆栈的方式。通常,对于给定的编译器,堆栈指针总是比堆指针少(或更大)。 无论如何,这是坏设计。 如果指针属于另一个堆(例如,在另一个Dll中分配),则这可能不起作用。