使用'delete'运算符时出现问题。它被VS2013与2013年11月的CTP编译器识别为语法错误,给出了消息:“预期声明”。这是代码:
int a = 1;
int* p = &a;
int* snj = new int[10];
delete p;
delete[] snj;
答案 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,因为它没有指向堆元素,它指向一个堆栈元素。