gpt4 book ai didi

C++ - 运算符删除混淆

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:14 31 4
gpt4 key购买 nike

我正在学习 C++,并且是删除运算符的新手。从代码中可以看出,我将删除运算符应用于新运算符 (m)。应用它之后,我仍然可以使用指针并为其分配一个新值。我没有收到任何编译器错误。从我读到的内容来看,在应用 delete 后我不应该使用新指针,因为指针没有指向任何东西。欢迎任何帮助。谢谢。

 int main()
{
int* m;
m = new int;
*m = 14;
cout << *m << " ";
delete m;
*m = 12;
cout << *m;
}

控制台输出

14 12

最佳答案

删除运算符有点微妙。当你写作时

delete m;

这段代码的意思是“回收m指向的内存”。换句话说,它对指针m 做任何事情,而是对m 指向的对象做任何事情。例如,在此图中:

       +-----+
m --> | 137 |
+-----+

指针 m 指向一个值为 137 的整数。如果您编写 delete m,则回收保存 137 的内存,但 m 本身未受影响。您可以将它重新分配以指向其他对象,或指向 NULL,但您不应继续引用它过去指向的值,因为它已不存在。

关于C++ - 运算符删除混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822147/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com