我有一个指向数组的指针和另一个引用相同数组的指针.如何删除这些指针中的任何一个而不杀死数组,以便第二个未删除的指针仍然有效?
例如:
int* pointer1 = new int [1000];
int* pointer2;
pointer2 = pointer1;
Run Code Online (Sandbox Code Playgroud)
现在我想摆脱pointer1,我将如何做到这样我可以通过pointer2继续正常访问数组?
Cor*_*sky 12
那些指针在堆栈上; 你不必删除它们.只是忽略pointer1它,它会在块结束时消失.
Jam*_*lis 10
你根本没有传递那个指针 delete.你只是停止使用该指针.如果要确保不再通过该指针访问该数组,可以将其设置为null.
C和C++不会跟踪指向对象或数组的指针数量.如果你想要引用计数,你需要使用引用计数容器,shared_ptr或者在这种情况下,shared_array(你可以在Boost中找到这两个容器,你的实现很可能已经<memory>在std命名空间中或in std::tr1).