Ого, не делай этого человека!Есть причина, по которой он работает, и это не что иное, как проблема.
Во-первых, p - это не массив, это указатель, вы можете убедиться в этом, проверив sizeof(p)
, что он всегда вернет 4 или 8, в зависимостиот того, используете ли вы 32- или 64-разрядную систему.
Указатель относится к позиции в памяти, поэтому, если вы попытаетесь напечатать указатель, вы получите адрес памяти, такой как 0x0B32D2F1 на 32-Бит-машина. Когда вы вызываете одну из функций *alloc
, процессор находит свободный блок памяти того размера, который вы запрашиваете, и выделяет его для вашей программы.
То, что вы делаете, - это доступ и редактирование памяти, котораяне был выделен вам, хотя это легко возможно, ничто не мешает вам сделать это, но это плохо, потому что эта память может быть выделена для другой программы, и тогда пользователь будет ненавидеть вас, когда вы завершите работу других его программ.Короче говоря, ВСЕГДА ВЫДЕЛИТЕ ПАМЯТЬ, которую ВЫ ИСПОЛЬЗУЕТЕ!ВСЕГДА!
О да, тогда есть вероятность, что процессор выделит ту нераспределенную память, которую вы используете, другой программе, которая будет связываться с вашей.