在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--);
}