继续处理错误。导致我的程序破裂

时间:2014-10-29 20:32:49

标签: c++ data-structures stack

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是我之前在代码中定义的指针。

2 个答案:

答案 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,然后尝试访问未定义的行为。