LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 857|回复: 1

求解josephus问题过程中,delete对象指针遇到问题

[复制链接]
发表于 2004-10-12 14:54:55 | 显示全部楼层 |阅读模式
想通过代码理解josepus问题。

自定义了一个循环链表类,叫RecList:
class RecList
{
        public:
                Node* head;
                Node* rear;
...
};

class Node
{
        public:
                Node* next;
                int data;
...
};

测试的时候,用new生成Node类的对象数组:
ptrnodes = new Node[players];

还有RecList对象mylist: RecList mylist; //空链,尚没有结点

通过RecList::InsHead(Node*)方法(采用头插法),向RecList的对象插入各个node:
mylist.InsHead(&ptrnodes);

求解josephus问题过程中:
ptr1 = mylist.head;
...
delete ptr1;

源代码在gcc 3.2下编译。运行时提示segment fault。出错语句为delete ptr1;


疑问陈述:mylist的各结点都是Node对象,Node对象(数组)通过new操作产生,可是delete的时候却出错。请教在这样的背景下如何适当的释放内存。
多谢了先。

源代码详见附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2004-10-18 00:08:23 | 显示全部楼层
你一次性分配的是连续的地址空间,回收时不能只回收其中一部分,一般是用到一个
Node分配一个,mylist.InsHead(new Node(..));
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表