Я пытался выполнить следующий код на Linux, установленном на рабочем столе, а также тот же Linux, установленный на виртуальной машине.результат ошибки сегментации
#include <stdio.h>
int main()
{
int *ptr;
printf("%d\n",*ptr);
return 0;
}
Я был удивлен, чтобы увидеть результаты на Linux, установленный непосредственно на рабочем столе она дает «сбой сегментации» , тогда как на Linux, установленный на виртуальной машине, он печатает некоторое значение вредного. Может кто-нибудь, пожалуйста, помогите мне понять, почему это так?
Исправить ошибку, и тайна исчезнет. Багги код гораздо сложнее понять, чем правильный код. –
Это называется «неопределенным поведением». Вы не можете сказать, что он может сделать. – ugoren
Вызов неинициализированного указателя - это неопределенное поведение. «Undefined» означает, что все может случиться. Вы можете получить ошибку сегментации. Или значение может быть мусором. Или ваш компьютер может взорваться. Все идет. –