Cześć,
mam krótkie pytanie.
Czy pisząc std::vector<int> wektor;
dokonuję alokowania pamięci na stercie?
Czy na przykład aby to zrobić muszę użyć operatora new
?
W przypadku tego konkretnego wektora - nie wiadomo. Możliwe, że alokuje, możliwe że nie.
int a;
auto b = new int;
a
jest na stosie, b
jest na stercie - przy czym musisz wziąć pod uwagę, że C++ jako taki nie zna tych pojęć (przynajmniej w tym kontekście) i jedyne co Cię powinno interesować to czas życia zmiennych i konieczność (lub jej brak) samodzielnego zwolnienia zasobów.
Czyli jeżeli mam zadanie, w którym nie mogę alokować pamięci na stercie, to nie mogę utworzyć nowego wektora i umieszczać w nim wartości?
To zależy co prowadzący ma na myśli. Może to to oznaczać, może tego nie oznaczać, ciężko powiedzieć.
Rozumiem, dziękuję za pomoc :)
Aby elementy wektora były alokowane tylko na stosie musisz użyć własny alokator pamięci, lub też użyć już istniejącego np. stack_allocator.
Opcjonalnie zawsze można użyć std::array, ale bez możliwości dynamicznej zmiany jej rozmiarów.
Dziękuję za odpowiedź :)