尝试打印出用户空间内存的内容

时间:2018-06-22 02:06:25

标签: c operating-system virtual-memory

在64位NetBSD系统上,为什么这些代码在打印几行后才挂起,却没有段错误或抱怨?将*add--更改为*add++会引起段错误,这是可以理解的,因为该过程会在某些迭代之后尝试访问内核内存。

#include <stdio.h>
#include <stdint.h>

void main() {
        uint8_t x = 5;
        uint8_t *add = &x;
        printf("%u\n", sizeof(void*));

        while (1)
                printf("%p %x\n", add, *add--);

}

0 个答案:

没有答案