我正在学习C++,并且是删除操作符的新手.从代码中可以看出,我将删除运算符应用于new运算符(m).应用它之后,我仍然可以使用指针并为其指定一个新值.我没有收到任何编译器错误.根据我的阅读,我应该在应用删除后使用新指针,因为指针不指向任何东西.欢迎任何帮助.谢谢.
int main()
{
int* m;
m = new int;
*m = 14;
cout << *m << " ";
delete m;
*m = 12;
cout << *m;
}
Run Code Online (Sandbox Code Playgroud)
控制台输出
14 12
Run Code Online (Sandbox Code Playgroud)
删除操作符有点微妙.当你写作
delete m;
Run Code Online (Sandbox Code Playgroud)
这段代码的意思是"回收m指向的内存".换句话说,它对指针没有任何作用m,而是指向对象m点.例如,在此图中:
+-----+
m --> | 137 |
+-----+
Run Code Online (Sandbox Code Playgroud)
指针m指向一个值为13的整数.如果你写delete m,那么137回收内存,但m它本身是不受影响的.您可以将其重新指定为指向其他对象,或者指向其他对象,NULL但不应继续引用它所指向的值,因为它不再存在.
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |