Ben bir işlev içinde bir tartışma için bellek ayrılamadı için aşağıda iki farklı çözümler gördüm:** kullanarak bir işlev bağımsız değişken için bellek ayırma veya * &
kullanma **:
template <class T>
void funcPP(T ** ppnDynamicInt) {
*ppnDynamicInt = new T;
}
kullanılması
vs
* &
template <class T>
void funcRP(T *& pnDynamicInt) {
pnDynamicInt = new T;
}
Örnek işlevleri kullanarak ->
daha güvenli/daha iyi bir çözümdür Neint * pnDynamicInt;
funcPP(&pnDynamicInt);
funcRP(pnDynamicInt);//memory leak I know ;)
? Bir çözüm daha verimli mi?
(Not: Ben akıllı işaretçiler :) ile daha iyi olurdu biliyorum) dil garanti pnDynamicInt
boş asla olduğunu, çünkü ben funcRP
öneririm, sadece iki alternatif arasında gösterilen yapmayı düşündüğünüz
Değeri döndürmek daha iyi olur. – interjay
Bellek sızıntısı mı? Ben öyle düşünmüyorum. –
@Jorn, bir bellek sızıntısıdır çünkü pnDynamicInt'in önceki değeri, yeni bir değer atanmadan önce silinmemiş/serbest bırakılmamıştır ve artık bu işaretçiye erişmenin bir yolu yoktur. – Isaac