复制指针然后调用delete

时间:2014-02-16 13:59:00

标签: c++

如果我复制一个指针然后要求删除指向的分配是有效的C ++,还是未定义?我没有从谷歌找到一个满意的答案。感谢。

char* orig = new char[100];
char* copy = orig;
delete[] copy;

3 个答案:

答案 0 :(得分:7)

这完全有效。您正在释放在第一行分配的数组。

请注意,复制指针不会复制分配的数组。所以你分配一个数组,然后你释放一个数组,让你没有剩下的数组。

答案 1 :(得分:0)

但不要忘记orig指向同一个内存,所以当你删除[]复制时,orig指针也会变得无法使用....哦对不起Joseph已经说过了。

答案 2 :(得分:0)

当你删除第二个指针时,它将删除已分配的数组,但第一个指针指向同一个内存位置,因此它将成为悬空指针。