使用'delete'时出现语法错误

时间:2015-06-05 08:52:22

标签: c++ pointers syntax

使用'delete'运算符时出现问题。它被VS2013与2013年11月的CTP编译器识别为语法错误,给出了消息:“预期声明”。这是代码:

int a = 1;
int* p = &a;

int* snj = new int[10];

delete p;
delete[] snj;

3 个答案:

答案 0 :(得分:4)

C ++不允许你在Python或其他语言的顶层编写任意表达式。您需要将代码放在一个函数中,在这种情况下可能是main

int main()
{
    int a = 1;
    int* p = &a;

    int* snj = new int[10];

    delete p;
    delete[] snj;
}

请注意,对未使用delete分配的指针使用new是未定义的行为。

这样的事情非常基础,应该由你的介绍性书籍介绍。如果您没有介绍性的书籍,则应get one

答案 1 :(得分:0)

指向a的地址。 a是堆栈上的局部变量decalred。您只能在dynalically assigned heap memory(使用new关键字创建的任何变量)上调用delete。

a超出范围时自动删除。

答案 2 :(得分:0)

你不应该删除p,因为它没有指向堆元素,它指向一个堆栈元素。