打印随机指针有危险吗? (Windows 10、x64)

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

我用 C++ 创建了一个程序,它创建一个指向变量的指针,然后继续将机器内存中的每个字节作为字符读取。这是我的代码:

#include <iostream>
#include <windows.h>

int main(int argc, char** argv) {
    unsigned long long i = 0;
    char start = 65;
    char* ptr = &start;
    while (1) {
        try {
            std::cout << *(ptr + i);
        } catch (...) {
            std::cout << "!";
        }
        i++;
        Sleep(atoi(argv[1]));
    }
}

当我运行程序时,输出发生变化;有时我会得到几行乱码,但其他时候我会得到几页的输出,其中我可以找到系统信息(例如目录和语言)。这很酷。太酷了,我担心它可能对我的系统有害。打印随机指针的内容有风险吗?

另外,我的电脑在过去三分钟内发出了两次通知噪音,但两次我都没有收到通知。这可能只是巧合,但我感到害怕

c++ windows pointers memory ram
1个回答
0
投票

不。操作系统在启动任何进程之前分配一个“虚拟地址空间”。该地址之外的任何访问都会导致段错误 因此,程序可能会继续读取其地址空间中的所有随机(可能有趣的)字节,直到出现段错误。

参考资料:

    虚拟内存如何发生段错误?
© www.soinside.com 2019 - 2024. All rights reserved.