Std::vector wskaźników. Trzeba usuwać wszystkie elementy za pomocą delete?
Ostatnio zmodyfikowano 2015-08-23 19:59
nano-stalker Temat założony przez niniejszego użytkownika |
Std::vector wskaźników. Trzeba usuwać wszystkie elementy za pomocą delete? » 2015-08-22 23:27:35 Witam. Tak jak w temacie. Jeśli mamy taką oto tablicę wskaźników: std::vector < std::string *> tablica to trzeba dla każdego jej elementu wywoływać operator delete , żeby nie spowodować wycieków pamięci? Z góry dziękuję za odpowiedzi. |
|
notabigthreat |
» 2015-08-22 23:29:34 Tak. Nie baw się lepiej we wskaźniki, tylko użyj std::unique_ptr<std::string> z <memory>. BTW Po co chcesz wskaźniki? Nie wystarczy wektor obiektów? |
|
nano-stalker Temat założony przez niniejszego użytkownika |
» 2015-08-22 23:36:43 Czyli mój zapis powinien wyglądać tak? Dzięki za pomoc. std::vector < unique_ptr < std::string >> Nie, ponieważ chcę żeby to było na oryginalnych obiektach (nie string'ach a własnych klasach) a & nie chciało ze mną współpracować, lub coś robiłem źle, a pozatym nie chcę kopii ;) |
|
notabigthreat |
» 2015-08-22 23:38:37 Na pewno nie: std::vector < std::string > ? |
|
pekfos |
» 2015-08-22 23:42:58 Nie, ponieważ chcę żeby to było na oryginalnych obiektach |
Co? Podaj konkretny kod, bo być może nie możesz używać tu delete. |
|
notabigthreat |
» 2015-08-22 23:50:18 a pozatym nie chcę kopii ;) | vector<std::string>::push_back nie tworzy kopii. |
|
nano-stalker Temat założony przez niniejszego użytkownika |
» 2015-08-22 23:58:50 class Logger { std::vector < Log *> log; void dodajLog( Log * newLog ) { log.push_back( newLog ); } };
void main() { Log jakis_log; jakis_log.adres( "C:/tu.log" ); Logger logger; logger.dodajLog( & jakis_log ); jakis_log.adres( "C:/inne_miejsce.log" ); };
W zasadzie, to chodzi mi, że gdy wywołam destruktor Loggera to powstaną wycieki pamięci. Czyli najlepiej użyć std::unique_ptr? Wybaczcie za błędy i nieścisłości ale zmęczony jestem. Vector nie tworzy kopii... a tego nie wiedziałem. |
|
notabigthreat |
» 2015-08-23 00:01:11 Pokazałbyś klasę Log? |
|
« 1 » 2 |