void push(char name, int key)
{
Node *character = NULL;
character->link = tos;
name = character->data;
key = character->precedence;
push(character);
};
我的两个例外:
First-chance exception at 0x011460C2 in Program Assignment 2new.exe: 0xC0000005: Access violation writing location 0x00000008.
Unhandled exception at 0x011460C2 in Program Assignment 2new.exe: 0xC0000005: Access violation writing location 0x00000008.
同样tos
是我之前在代码中定义的指针。
答案 0 :(得分:0)
你声明一个指针'字符'类型为Node并使其为null。你永远不会打电话给新的'在那个指针上。您必须调用new来创建一个字符实例,否则字符 - >链接没有有效的内存位置,您将获得例外。
*请记得再次调用删除以回退空间。
答案 1 :(得分:0)
void push(char name, int key)
{
Node *character = new (std::nothrow) Node;
if(0 != character){
character->link = tos;
name = character->data;
key = character->precedence;
push(character);
}
else{
//Give an error message
}
}
我是如何重写你必须避免一些错误的。
最初您将字符设置为NULL,然后尝试访问未定义的行为。