Сегодня я столкнулся с проблемой, связанной с локальными переменными. Я узнал, что ...
int * somefunc()
{
int x = 5;
return &x;
}
int * y = somefunc();
//do something
плохо, небезопасно и т. Д. Я полагаю, что дело обстоит так же для ...
int * somefunc()
{
int * x = new int;
x = 5;
return x;
}
int * y = somefunc();
//do something
delete y;
Долгое время у меня сложилось впечатление, что это будет безопасно, поскольку адрес x остается в области действия, когда он возвращается. Тем не менее, у меня возникли вторые мысли, и я думаю, что это может привести к утечкам памяти и другим проблемам, как в первом примере. Может ли кто-нибудь подтвердить это для меня?