是否可以通过指针销毁内存?

-1 c memory pointers

首先我保证我不会做任何坏事。我只是好奇。

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char ** argv) {
    int* p;
    while (true) {
        *p = 0;
        p++;
    }
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ice*_*ind 7

大多数现代操作系统都在保护模式下运行。这意味着当您运行应用程序时,操作系统正在为您的应用程序创建虚拟内存空间。当内存分配命令(例如 )malloc()尝试分配内存时,操作系统会拦截该命令并在应用程序首次运行时创建的虚拟内存空间中分配内存,然后返回指向虚拟内存空间中该内存的指针。空间。该指针是您应用程序自己的虚拟空间中的指针,不能访问其他进程的内存或系统进程的内存。

在保护模式下,有四个特权级别或环,编号从 0 到 3,环 0 特权最高,环 3 特权最低。环的使用允许系统软件限制任务访问数据、调用门或执行特权指令。

唯一的例外是如果您正在编写设备驱动程序。由于设备驱动程序直接与硬件连接,因此设备驱动程序通常在环 0 中运行,并允许访问常规进程无法访问的系统内存区域。

现在,如果您要在使用非保护模式(称为实模式)的操作系统(例如 DOS 或 Windows 286)中运行程序,那么它会使您的计算机崩溃。它不会“破坏”内存,但会使内存崩溃,并且您很可能被迫关闭计算机电源并重新打开。