Почему программа, обращающаяся к недопустимому указателю на указатель, не падает?
Программа, обращающаяся к недопустимому указателю на указатель, не завершает работу с 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);
}