有关析构函数的问题

renyangyao 2003-08-23 07:56:14
我创建了一个链表,头指针为head
现在想在析构函数里释放内存空间,请问该怎么办
...全文
21 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
renyangyao 2003-08-27
  • 打赏
  • 举报
回复
基本上使用steedhorse的方法
Node * p = head;
node * q;
while(p)
{
q = p- >next;
delete p;
p = q;
}
renyangyao 2003-08-27
  • 打赏
  • 举报
回复
基本上使用steedhorse的方法
Node * p = head;
node * q;
while(p)
{
q = p- >next;
delete p;
p = q;
}
晨星 2003-08-23
  • 打赏
  • 举报
回复
同意楼上的方法,如果你确实感兴趣,可以专门写一个Allocate函数,然后再写一个Deallocate函数,然后再Allocate中分配上几十万个结点,再Deallocate中释放他们,写一段类似下面的测试代码:

getch();
Allocate();
getch();
Deallcate();

测试时打开Windows 2000的任务管理器,一遍按键,一般观察你的进程的内存占用情况。
注意,因为操作系统内存的分配往往是以段或页为单位的,所以,如果你分配的结点书不多,可能根本看不出内存的变化。

不过说实在的,我个人感觉这挺无聊的,:)
winco 2003-08-23
  • 打赏
  • 举报
回复
连续申请一个10000个节点的东东,
再没有释放内存的时候,通过Win2000的线程监测(任务管理器)
看一下程序使用的内存有多少。
然后释放,再看用了多少
renyangyao 2003-08-23
  • 打赏
  • 举报
回复
我用的是vc++6.0
renyangyao 2003-08-23
  • 打赏
  • 举报
回复
我觉得也是,不过还是想测试一下,不知道大家有什么好办法吗?
nirvana_li 2003-08-23
  • 打赏
  • 举报
回复
《数据结构》里面就是用的 steedhorse(晨星)的方法,应该可以。
renyangyao 2003-08-23
  • 打赏
  • 举报
回复
谢谢上面的朋友,编译通过了,可是我怎么才能看出内存释放了啊?
晨星 2003-08-23
  • 打赏
  • 举报
回复
从头到尾,一个结点一个结点的释放啊。比如可以这样:

Node * p = head;
node * q;
while(p)
{
q = p->next;
delete p;
p = q;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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