Alokowanie pamięci na stercie

0

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?

3

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.

0

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?

1

To zależy co prowadzący ma na myśli. Może to to oznaczać, może tego nie oznaczać, ciężko powiedzieć.

0

Rozumiem, dziękuję za pomoc :)

6

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.

0

Dziękuję za odpowiedź :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1