Jay*_*Jay 5 c++ stack-overflow recursion memory-management smart-pointers
简单的数据结构,例如链表,其中"下一个"指针是智能指针.当头节点被删除时,'next'的智能指针启动并进行递归删除.对于很长的清单,这会很快打击堆栈.
我不得不回过头来用简单的原始指针替换这些智能指针.我在这里错过了什么吗?
假设我理解你是对的,head并且next都是智能指针,你可以通过以下方式避免这种情况:
head = head->next;
Run Code Online (Sandbox Code Playgroud)
或同等学历.你的'旧'头将被删除,旧的第二名将被提升到头部.一致的变化,没有深度递归.唯一的先决条件是头不是NULL开始.
正如迈克在评论中指出的那样,如果目标是删除整个列表,那么你可以在循环中重复这一点.
| 归档时间: |
|
| 查看次数: |
656 次 |
| 最近记录: |