【发布时间】:2020-05-25 12:01:41
【问题描述】:
在我的程序中,我经常使用删除运算符。如果我的一个指针(比如 myPtr)指向存储系统文件的内存位置。 如果我在代码中使用“delete myPtr”,它会删除该文件吗? 我的 IDE(VS Code)为每个程序生成一个 exe 文件。当我从集成终端运行程序和运行 exe 文件时有什么区别吗? 如果要删除系统文件,会发生这种情况——从ide运行,运行exe文件,还是两者兼而有之?
【问题讨论】:
-
不用担心。指针指向 RAM,而不是硬盘内存。操作系统也可能会保护这些文件。
-
不,要删除文件,您需要更改文件系统。将其加载/卸载到内存中不应删除文件。
-
如果你创建了一个类,其中析构函数也删除了一个文件,那么在这样一个类的对象上使用 delete 运算符,它会尝试删除文件。如果文件不存在,或者运行可执行文件的用户缺少权限,则尝试可能会失败。这不会是“意外”,而是相当蓄意的。
-
如果您要删除的“事物”是某个对象,作为其析构函数(或其基础/派生的析构函数)的一部分,它会删除磁盘上的文件,那么可以肯定,它可以发生。但坦率地说,我更关心您首先使用手动内存管理的原因(例如“我经常使用删除运算符”)。智能指针几乎可以为您完成所有繁琐的工作,即便如此,只有在您真正进行动态管理时(您会惊讶于您不的频率)。
标签: c++ windows pointers visual-studio-code dynamic-programming