在无限循环中删除未初始化的指针变量时会发生什么情况
What happens when an uninitialised pointer variable is deleted in an infinite loop?
假设如果我执行一个无限循环(哨兵),其中有一个未初始化的指针,每次执行循环后都会被删除,所以问题是,指针是否有可能访问用于运行计算机的系统变量?好吧,我搜索了它的答案,并找到了一个关于悬空指针的接近答案,但答案没有指定它是否可以访问系统变量,即使有,也可以删除它以导致计算机出现问题是不可修复的?编辑:(我想我对读者的怀疑造成了错误的印象,我从来没有真正打算做或已经做过,但如果出现这种情况会发生什么?是我的问题。
删除未初始化的指针变量时会发生什么...
假设"删除"是指类似delete ptr;
,则行为是未定义的。如果你问X是否可能发生,答案是肯定的,对于X的任何物理可能值。 (操作系统具有防止单个程序的恶意行为的保护措施。这些保护措施不是100%可靠的。
。在无限循环中?
这没什么区别。
在这种情况下,程序具有未定义的行为。如果指针由 0 初始化,则一切正常。
这取决于操作系统。对于好的旧DOS,这是可能的,尽管不太可能(很可能您的PC会崩溃,所以您只需要重新启动),对于现代操作系统来说,这几乎是不可能的,因为正常的进程内存与系统隔离并且您无法访问它。尽管某些程序可以利用安全漏洞来修改系统数据,但这不太可能通过随机行为不良的过程发生。
你提到了delete
这个词,你delete
你使用new
分配的内容,所以在你的情况下,当你删除一个未初始化的指针时,结果将是未定义的行为(UB)。
在一个无限循环中这样做:你只是在增加UB的机会!
您可以在 https://isocpp.org
上阅读有关内存管理的更多信息双重删除灾难
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 将指针分配给另一个指针时会发生什么情况?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 发生注入类名时会发生什么情况?(C++)
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- 正在连接的等待条件变量的线程会发生什么情况?
- 如果将变量设置为等于新对象,旧对象会发生什么情况?
- 删除父类时,方法局部静态变量会发生什么情况
- 当运算符尝试输入大于变量可以包含的值>>会发生什么情况?
- 在不构造实例变量的情况下C++声明实例变量的好方法是什么?
- 当库静态链接时,静态变量会发生什么情况
- 动态链接共享库中的全局变量和静态变量会发生什么情况
- 如果两个名称空间具有相同的变量名,会发生什么情况
- 在常量和非常量引用变量的情况下,什么时候决定调用哪个函数
- 在作用域中创建指针时,当指针超出作用域时,指向的变量会发生什么情况
- 在无限循环中删除未初始化的指针变量时会发生什么情况
- 如果使用"new"实例化对象而不将其分配给变量,会发生什么情况?