访问非法指针的程序不会因 SIGSEGV 崩溃。这不是一件好事,但我想知道这是怎么回事,以及这个过程是如何在生产中存活了很多天的。这让我感到困惑。
我已经在 Windows、Linux、OpenVMS 和 Mac OS 中试用了这个程序,他们从未抱怨过。
#include <stdio.h>
#include <string.h>
void printx(void *rec) { // I know this should have been a **
char str[1000];
memcpy(str, rec, 1000);
printf("%*.s\n", 1000, str);
printf("Whoa..!! I have not crashed yet :-P");
}
int main(int argc, char **argv) {
void *x = 0; // you could also say void *x = (void *)10;
printx(&x);
}