質問のタイトルが少し頭を悩ませているように見えることは知っていますが、これを一言で言う方法が本当にわかりません. 私が何を意味するかをお見せします:
void f(T *obj)
{
// bla bla
}
void main()
{
f(new T());
}
私の知る限り、(ほぼ) すべての new には削除が必要であり、これにはポインタ (new によって返される) が必要です。この場合、new によって返されるポインターはどこにも格納されません。それで、これはメモリリークでしょうか?
C++ は、関数の終了後にオブジェクトを削除する何らかの魔法 (プログラマーには見えない) を機能させますか?それとも、この方法は常に悪い考えですか?