我可以通过不正确使用指针分配和值更改来破坏操作系统吗?

问题描述 投票:0回答:2

正如标题所暗示的,我是C ++的新手,正在Code :: Blocks IDE上练习许多不同的程序。我今天想到了这一点,似乎无法获得准确的答案。我可以通过不正确使用指针来无意间破坏操作系统上的数据吗?更详细一点,将:

char *p ; //creating uninitialized pointer with a random address; 
          //let's assume it's the address to a variable within a valid file?
*p = 'G' ;

//or

int *p ; 
*p = 2 ;

可以在我的IDE /编译器文件中这样做可能损坏某些数据,例如:

  1. 操作系统文件-也许是核心操作系统文件,并且值从1 ---> 2更改可能会导致外部设备的物理损坏。

    AND / OR

  2. C:驱动器上未打开的随机文件-例如,一个重要的文件已经过256位加密;单个值的更改将使解密文档变得几乎不可能,从而导致重要文档完全损坏且无法恢复。在尝试打开文件但在解密过程中收到错误消息之前,我一直没有意识到这种损坏。

    AND / OR

  3. 使用临时内存的打开程序-例如,我当前正在运行一个冷库比特币钱包程序(一个a脚的程序),并且假设该程序打开了一个动态分配的加密文件。该文件包含用于访问10万美元冷库比特币所需的备份密钥验证文件;文件中字符的更改将永久损坏文件,并基本上导致丢失恢复密钥备份数据。因此,如果我忘记了我的比特币钱包密码,尝试使用恢复功能将失败并导致永久损失漂亮房子中的首付。

  4. 因此,这是一些示例,我想知道是否有任何一个简单地通过弄乱指针,尝试学习C ++就能实现。我不想现在或将来无意间导致上述任何一种情况(也许正在一个更大的项目中,上述情况会带来灾难),所以请让我知道这些情况中是否有可能(尽管发生的可能性较低,但仍有可能)。如果您有可能使用无效的指针破坏操作系统中的数据,扩大内存泄漏,等等,请也请您解释防止上述情况的动态。

正如标题所暗示的,我是C ++的新手,正在Code :: Blocks IDE上练习许多不同的程序。我今天想到了这一点,似乎无法获得准确的答案。我可以无意间...

c++ pointers memory bitcoin corruption
2个回答
3
投票

应该设计适当的现代操作系统,以使您不会通过运行编写的程序来破坏操作系统。注意应该


2
投票

我可以通过不正确使用指针分配和值更改来破坏操作系统吗?

© www.soinside.com 2019 - 2024. All rights reserved.