Как выделяется память в классах? Вот допустим у нас есть класс class Examp{
public:
int size;
string str2;
string *str3;
vector arr1;
vector *arr2;
Examp(){
arr2 = new vector();
str3 = new string();
}
~Examp(){
delete arr2;
delete str3;
}
}
};
int main(){
Examp ex = new Examp ();
delete ex;
Examp ex2();
}
Где выделяется память для переменных в случае динамического и в случае статического объявления?

21 Авг 2019 в 06:23
207 +1
0
Ответы
1

Память для переменных в случае динамического объявления выделяется в куче (heap), а в случае статического объявления - в стеке (stack).

В вашем примере:

При создании объекта Examp ex в функции main память для объекта будет выделена на стеке.При создании объекта Examp *ex = new Examp() в функции main память для объекта будет выделена в куче.При создании объекта Examp ex2() в функции main память для объекта также будет выделена на стеке. Кроме того, для создания объекта в данном случае следует использовать конструкцию Examp ex2;, а не Examp ex2();.

Для динамически выделенных ресурсов (указателей на vector и string в вашем классе Examp) необходимо быть внимательным и освобождать выделенную память в деструкторе класса с помощью операторов delete, чтобы избежать утечек памяти.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 795 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир