我试图准确理解c ++中删除的变量会发生什么.假设我有以下内容.
MyObject * obj;
for (int i = 0; i < 100000000; i++){
obj = someMethodThatReturnsNewMyObject();
obj->doSomething();
delete obj;
}
Run Code Online (Sandbox Code Playgroud)
现在,在实例化时,obj
是一个指向MyObject
对象的指针.它首先由该线初始化obj = someMethodThatReturnsNewMyObject();
.然后一些方法被称为只是为了好玩,并被obj
删除.现在我知道当像这样删除某些东西时,它指向的内存空间被清除,指针被设置为什么都没有.
但是,当for循环回来时,我重新初始化指针,导致它分配一个新的内存空间,obj
然后指向这个新的空间.但是,指针本身从内存中移除了.在整个循环过程中,它只指向我指出的任何指向或指向任何东西(删除时).
那么我的问题是:指针本身是什么时候,即指针占用的内存空间,什么时候被删除?为什么我不需要删除它,如果我需要删除指向的内存?