Да, это даст свисающий указатель. Если вы хотите, чтобы значение сохранялось, у вас есть несколько возможностей. Во-первых, поскольку вы, по-видимому, действительно хотите вернуть значение, сделайте именно это - верните значение вместо указателя. Другой - выделить объект, связанный с новым, и вернуть указатель на это динамически выделенное пространство. Это делает удаление объекта ответственностью вызывающего абонента, однако, что может привести к утечке памяти и тому подобное.
В конце концов, вы, как правило, хотите выяснить, в какой области переменная действительно нуждается, и иметь что-то (чаще всего объект) с этой областью, поэтому она будет автоматически создана при вводе в область, и автоматически уничтожается при выходе из области действия.
Если вы не можете этого сделать, вам все равно нужно выяснить, кто «владеет» объектом, и будет нести ответственность за его уничтожение по мере необходимости. Время от времени это трудно подкрепить, и вам нужно что-то вроде указателя с подсчетом ссылок, чтобы отслеживать все. По крайней мере, по моему опыту, они используются гораздо чаще, чем на самом деле. Я писал C++ почти до тех пор, пока кто-либо за пределами AT & T, и пока не нужен shared_ptr. Несколько раз, я думал, что мне это нужно, но в итоге выяснил, что более чистый дизайн устраняет это требование.
Здесь нет мусора. Просто разматывайте стеки. – Tom