На практике на современном ПК с современной операционной системой попытка записи в адрес памяти 0 приведет к ошибке сегментации, и операционная система завершит программу.
На некоторых встроенных аппаратных средствах или ПК с операционной системой без защиты памяти (например, MS-DOS) компьютер, скорее всего, зависнет быстро, потому что вы будете перезаписывать области памяти, важные для операционной системы, и ЦП будет в конечном итоге выполнение «случайного» машинного кода, который в большинстве случаев в конечном итоге приводит к зависанию процессора. Для восстановления вам может потребоваться полный сброс или отключение питания. Если вам повезет меньше, вы можете испортить, например, содержимое диска.
На уровне языка присвоение 0 указателю аналогично присвоению ему нулевого указателя. Разыменование нулевого указателя (это *ptr = 0;
) является неопределенным поведением, поэтому теоретически компилятор может сгенерировать любой машинный код, который можно себе представить для этого исходного кода (потому что он может доказать, что у вас есть неопределенное поведение прямо здесь). Так что в теории все может случиться, когда вы запустите это.