Мне было предложено это в недавнем интервью, в основном написав функцию, чтобы объединить функциональные возможности бесплатного и назначить нуль. Я ответил следующим образом:
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
Итак, после выполнения, ptr local to main будет содержать нулевое значение, поскольку я возвращаю его из функции newdelete. Если бы я только назначил NULL в функции newdelete, ptr local to newdelete был бы нулевым, а не ptr локальным на main.
Я думаю, что мое решение было правильным, интервьюер тоже принял его. Однако он ожидал другого ответа. Он настаивал, чтобы я не возвращал NULL из функции и все еще добивался желаемого результата.
Есть ли способ сделать это? Все, что я могу представить, это передать другой аргумент, который является указателем на указатель ptr local на main, но я не понимаю, почему это лучше, чем то, что я сделал!