Я пытаюсь изучить C++, и из моего понимания, если переменная выходит из области видимости, она уничтожается и ее память перераспределяется. Если у меня есть класс и его метод создает переменную, не следует ли эту переменную уничтожать после вызова метода? Например:C++ - Область переменных, созданных в методе класса
class TestClass {
public:
struct Pair{
std::string name;
int value;
};
void addPair() {
//should be deleted after push_back is called?
Pair x = Pair{ std::string{ "Test Object " }, counter++ };
pairs.push_back(x);
}
void printPairs() {
for (int i = 0; i < pairs.size(); i++) {
std::cout << "pair { " << pairs[i].name << " : " << pairs[i].value << " } " << std::endl;
}
}
void removePair() {
pairs.pop_back();
}
private:
int counter;
std::vector<Pair> pairs;
};
Но когда я попытался addPair()
затем printPairs()
затем removePair()
он работает отлично. Почему он не выдает ошибку, говоря о некорректном доступе к ячейке памяти?
Ваш код не содержит доступа к недопустимым переменным. Можете ли вы изменить свой вопрос, чтобы точно объяснить, где вы думаете, проблема? Это поможет опубликовать ваш фактический код, а не описывать его. –