求助,使用new分配内存,何处使用delete?

shi1983 2010-04-14 04:04:52
struct NODE
{
float m_fData;
NODE *m_pNext;
};
NODE *pListHead;//链表头部指针
NODE *pNewNode;
NODE *pLastNode;
float fElement;//当前元素值
pListHead=NULL;//新链表
fElement=1024;
while(fElement>0.00001)
{
pNewNode=new NODE;
pNewNode->m_fData=fElement;
pNewNode->m_pNext=NULL;
if(pListHead==NULL)
{
pListHead=pNewNode;
pLastNode=pNewNode;
}
else
{
pLastNode->m_pNext=pNewNode;
pLastNode=pNewNode;
}
fElement/=2;
(1) delete pNewNode;
}
(2) delete pNewNode;[/color]
NODE *pCurNode=pListHead;
i=m=0;
CString str;
while(pCurNode->m_pNext!=NULL)
{
str.Format("%f",pCurNode->m_fData);
pDC->TextOut((++i)*20,(++m)*20,str);
pCurNode=pCurNode->m_pNext;
}
(3) delete pNewNode;[/color]


以上是一个链表实现一个从1024开始的等比数列,
while循环中使用了new创建了新的结点。
那么具体在何处采用delete删除结点呢?
(1)or (2) or (3) ??
...全文
84 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
申请的那块内存,你不需要用就可以删除啊,就这么简单。

你在3删除肯定是最安全的。

(1) delete pNewNode;
}
(2) delete pNewNode;[/color]
NODE *pCurNode=pListHead;
i=m=0;
CString str;
while(pCurNode->m_pNext!=NULL)
{
str.Format("%f",pCurNode->m_fData);
pDC->TextOut((++i)*20,(++m)*20,str);
pCurNode=pCurNode->m_pNext;

1,2处之后,pListHead明显还在被使用,自然可能出问题。
kevinyujm 2010-04-14
  • 打赏
  • 举报
回复
更正:
当然,如果你中断要删掉某个结点的话,自然是在删掉后要delete的。
-->
。。。。。。中途。。。。。。。。。。。。。。。。。。。。。。。
fenghaibo00 2010-04-14
  • 打赏
  • 举报
回复
认为都不对,因为如果在1,2处释放内存,那么3上的循环无法使用申请的内存。3处释放也没有释放完全~~申请了多个节点,只释放一个,内存泄露了
kevinyujm 2010-04-14
  • 打赏
  • 举报
回复
需要用的话,据不delete,不需要的时候,就可以delete。
就你的问题来说,放在(1)(2)处的话,但是后面明显还要使用(你后面有遍历这个链表),那自然是不行的。
既然是链表,最简单的处理是,程序退出前,遍历链表,delete每个结点。
当然,如果你中断要删掉某个结点的话,自然是在删掉后要delete的。
pengzhixi 2010-04-14
  • 打赏
  • 举报
回复
delete的时候你要考虑到后面时还要访问你分配的内存,如果不需要了,可以delete否则就不能delete
huatian008 2010-04-14
  • 打赏
  • 举报
回复
申请一块空间是用来用的,当你不再用的时候可以删掉它,
shi1983 2010-04-14
  • 打赏
  • 举报
回复
实验可知,放在(1)或(2)处会异常退出。
放在(3)处没有问题。
具体原因不知,请高手指点
linyongzuo 2010-04-14
  • 打赏
  • 举报
回复
3处。。第一次貌似你还在while循环里。
总之你要delete的话就要考虑在delete之前是否还有可能用到整个内存~
liyanlin122 2010-04-14
  • 打赏
  • 举报
回复
(1)处

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧