В этом фрагменте кода realloc эквивалентен malloc, но я не могу получить логику., когда realloc() эквивалентен malloc() в C?
int *ptr=(int*) realloc(NULL,10*sizeof(int));
почему он создает новый блок, так как NULL макрос определен в stdio.h, как 0, так это означает, что он указывает на базовый адрес 0, который в большинстве машин является системная область, так как можно перераспределить начать выделение памяти из базового адреса 0 для 10 целых чисел, почему это не ошибка сегментации?
Передача NULL не означает, что будет использоваться адрес 0. – 2501
Но это макрос, значение которого равно 0, а первый аргумент realloc - это указатель, поэтому, когда мы передаем 0 в переменную-указатель, это означает, что 0 является адресом, не так ли? – user123
Вы делаете много предположений, которые не соответствуют действительности. – 2501