如果我复制一个指针然后要求删除指向的分配是有效的C ++,还是未定义?我没有从谷歌找到一个满意的答案。感谢。
char* orig = new char[100];
char* copy = orig;
delete[] copy;
答案 0 :(得分:7)
这完全有效。您正在释放在第一行分配的数组。
请注意,复制指针不会复制分配的数组。所以你分配一个数组,然后你释放一个数组,让你没有剩下的数组。
答案 1 :(得分:0)
但不要忘记orig指向同一个内存,所以当你删除[]复制时,orig指针也会变得无法使用....哦对不起Joseph已经说过了。
答案 2 :(得分:0)
当你删除第二个指针时,它将删除已分配的数组,但第一个指针指向同一个内存位置,因此它将成为悬空指针。