【发布时间】:2016-09-23 10:50:29
【问题描述】:
我通常知道 * 和 & 符号。但是我们的老师给我们举了一个例子,她说“这里出现问题”
int *a1;
int *a2 = new int[100];
a1=a2 //What does this line mean???
delete []a2;
k=a1[0]//she said error occurs here.
我不明白什么是 a1 = a2 ? 为什么会出现错误?
【问题讨论】:
-
delete不是 C。似乎是 C++。编辑:@GürkanÇatak 你应该通过参加课程/课程来了解语言(我猜)。 -
这不是我自己的例子或问题。她的例子。
-
a1=a2表示Copy the address stored in a2 to a1。k=a1[0]有一个问题,因为代码做了delete [] a2,有效地释放了由指针a2和a1分配和持有的内存(记住它是相同的内存地址),并且在删除之后,它尝试取消引用(通过a1访问)它,这可能会导致崩溃。指向已释放内存区域的指针称为悬空指针。 -
在语句末尾添加
;不是避免编译错误吗? -
"我不明白什么是 a1 = a2 ?为什么会出现错误?" --> "
//she said error occurs here.": “k=a1[0]”,不存在“a1=a2”
标签: c++ pointers delete-operator assignment-operator