Strona 1 z 1

Przekazywanie wskaźnika dynamicznego do funkcji

Nowy postNapisane: czwartek, 10 września 2015, 10:59
przez duf
Witam,
Chciałbym przekazać wskaźnik utworzony dynamicznie do funkcji żeby tam wykonał swoje zadanie. Zastanawiam się tylko gdzie mam go usunąć? Myślę, że już w głównej funkcji a nie w tej wywołanej ale nie jestem pewny. Czy przekazując wskaźnik do funkcji robię jego kopię i mam dwa wskaźniki do tego samego obiektu? Jeśli tak to powinienem usunąć dwa jeden w funkcji głównej i drugi w funkcji wywoływanej. Dziękuję

KOD cpp:     UKRYJ  
void Funkcja( TStrings* plik )
{
  ............
  delete plik; // ???
}

Void Main()
{
  TStrings* plik = new TStringList;
 
  Funkcja( plik );
 
 delete plik;
}

Re: Przekazywanie wskaźnika dynamicznego do funkcji

Nowy postNapisane: czwartek, 10 września 2015, 15:52
przez polymorphism
Jeśli tak to powinienem usunąć dwa jeden w funkcji głównej i drugi w funkcji wywoływanej.

Jeśli masz dwa wskaźniki do tego samego obiektu, to dlaczego chcesz go usuwać dwa razy? delete nie służy do usuwania wskaźników, tylko do usuwania pamięci/obiektów, na które wskaźniki wskazują. Wywal delete z Funkcja i będzie dobrze.

W C++ powinno używać się inteligentnych wskaźników, wtedy problemy z własnością dynamicznie stworzonych obiektów znikną.