List(){list=0;}中,list没有分配内存就赋值
解决方案 »
- vc网络编程里面客户端如何访问服务器端数据库上的数据?
- COM被调用时的当前路径是什么?
- 进程地址小于 0x400000
- 大家进来帮我看看一个.h文件包含的问题.没分了,一共就31分了.
- 请教:如何判断某个定时器是否已开启?
- 请问这个论坛有没有客户端的工具?
- 求类似windows资源管理器那样的可以处理复制、粘贴等功能的右健菜单。
- 各位兄弟帮帮忙,以下语句执行竟然不成功了!!!!!
- 谁要Codejock的XT-ToolKit 1.9.1.0
- 谁知道nt.h这个文件在哪啊?
- 我看到有很多的软件,是用来清理注册表的,他们可以发现很多的注册表错误,他们的实现原理是什么呢!
- MFC基础问题:如何创建一个没有最大化按钮的单文档程序?
这是怎么说?
这不是和我的一样吗?
{
Item *pt=new Item(d);
pt->next=list;
list=pt;
return d;
}
list是分配了内存,它指向的是pt的地址,但pt在该函数结束后就被释放了,你的程序再给详细一点,最好把Item的代码也给出,不然不知道怎么改才符合你的要求。
Item定义为:
class Item
{
public:
int data;
Item *next;
friend class List;
Item(int d=0){data=d;next=0;}
Item();
virtual ~Item();
};
unhandled exception in the test.exe:0xC0000005:Access Violation
之后就不能运行下去了。
我试了你的方法,不过还是出现同样的问题。
两种方法:
一:
在Item中的构造函数中把Item的值初始化好;
二:
在List中的构造函数中改为{list.data=0;list.next=NULL;}
我觉得list=0,这样是没有错的。
我的一个同学也是这样写的,但他的可以,这真是怪事。
他是这样写的:
OpList::OpList()
{
list=0;
hlist=0;
}
ItemData *list;
ItemData *hlist;int OpList::insert(int d)
{
ItemData *pt=new ItemData(d);
pt->next=list;
list=pt;
return d;
}
我和他的是一样的,不过他可以运行我的去却不能。