Wpis z mikrobloga

#programowanie #cpp
Czy dobrze rozumiem, że nie mogę zwracać wskaźnika na tablicę, która została utworzona wewnątrz funkcji, bo po zakończeniu działania tej funkcji wskaźnik będzie wskazywał jakieś śmieci?
  • 19
  • Odpowiedz
@VanQator: jeżeli jest to tablica na stosie, to nie możesz. jeżeli to dynamicznie zaalokowana tablica, to możesz, ale musisz pamiętać, żeby ją zwolnić.
natomiast możesz zwrócić strukturę, która trzyma tablicę :P
  • Odpowiedz
@VanQator: No nie jest zaskakujące że masz śmieci na rezultacie quadraticEquation
dla wywołania quadraticEquation(1, 1, 1, 1)
delta jest mniejsza od zera, więc wpada w ostatni warunek, a że wartość res[0] i res[1] nie jest wyzerowana/ustawiona to masz to co było w pamięci w momencie alokacji
  • Odpowiedz
@VanQator: Kolega sugeruje, że można dynamicznie zaalokować pamięć, tylko trzeba pamiętać o jej zwolnieniu, to anty-pattern. Ten kto tworzy obiekt, powinien go niszczyć. No i rzecz jasna najlepiej użyć std::vector, ale o tym zapewne wiesz i wszyscy to mówią...
  • Odpowiedz
@VanQator: Neh, nie miałem na myśli problemu z wydajnością, lecz to, że za każdym razem jak wywołujesz quadraticEquation w 76. linijce, to powstaje nowa tablica, obliczenia są wykonywane na nowo, bierzesz z niej tylko jedną wartość w 76 i tak trzy razy :)
  • Odpowiedz