【发布时间】:2012-09-16 13:11:55
【问题描述】:
我创建了一个指针堆栈,用于创建二叉树。虽然我可以用单个节点填充堆栈,但在尝试将顶部节点的内存分配给一个新节点以便我可以创建一个实际的树时,它会出现段错误。举个例子:
TreeNode *c = new TreeNode;
c = stack.top(); //this segfaults
我不确定我是否误解了它是如何工作的,但由于两者属于同一类型,c 不应该能够等于堆栈的顶部吗?我已经坚持了好几个小时了。
【问题讨论】:
-
你刚刚泄露了两行内存。
-
栈是什么类型的,你是怎么填的?
-
堆栈使用模板作为类型,我在为根节点分配一些数据后通过推送根节点来填充它。如果你想让我把它放在那里,我会的。
-
从克里斯的观点来看,我想说你在第二段引出的辩论已成定局。也许在多花一点时间后,会更清楚该做什么(和不做什么)。
-
取决于栈的实现,如果栈是空的,你尝试
top它,它可能正在访问一个虚假的指针。
标签: c++ pointers stack segmentation-fault