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