Форум программистов, компьютерный форум CyberForum.ru

Немного о динамическом выделении памяти ... - C++

Войти
Регистрация
Восстановить пароль
 
4e87
4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51
22.08.2011, 01:38     Немного о динамическом выделении памяти ... #1
объявление данных в классе:

C++
1
2
3
4
5
6
class Employee
{..........
      private:
char *firstName;
char *lasrName;
}
конструктор динамически выделяет память для имени и фамилии:
C++
1
2
3
4
5
6
7
8
Employee::Employee(const char *first, const char * last)
{
        firstName= new char[strlen(first)+1];
        assert( firstName != 0);
        strspy( firstName, first);
 
........аналогично для last.....
}
Далее в мэйне:
C++
1
Employee *e1Ptr = new Employee ("Вася", "Пупкин");
Вопрос:необходимо небольшое разъяснение по поводу порядка выделения памяти при объявлении указателя на Employee и в когструкторе.
заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 01:38     Немного о динамическом выделении памяти ...
Посмотрите здесь:

C++ Вопрос о динамическом выделении памяти для строки
C++ Вопрос о динамическом выделении памяти
C++ Ошибка на динамическом выделении памяти
C++ Ошибка при динамическом выделении памяти
Ошибка при выделении памяти C++
Выравнивание при динамическом выделении памяти под массив C++
C++ Использование конструктора базового класса при динамическом выделении памяти
C++ Ошибка в выделении памяти
Создание исключения при динамическом выделении памяти C++
Ошибка при динамическом выделении двумерного массива char C++
Cin.getline() не работает при динамическом выделении памяти C++
Ошибка при динамическом выделении памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
22.08.2011, 04:33     Немного о динамическом выделении памяти ... #2
С начало выделятся память под новый Employee потом под firstName и соответственно под lastName.
Сыроежка
Заблокирован
22.08.2011, 16:58     Немного о динамическом выделении памяти ... #3
Цитата Сообщение от 4e87 Посмотреть сообщение
объявление данных в классе:

C++
1
2
3
4
5
6
class Employee
{..........
      private:
char *firstName;
char *lasrName;
}
конструктор динамически выделяет память для имени и фамилии:
C++
1
2
3
4
5
6
7
8
Employee::Employee(const char *first, const char * last)
{
        firstName= new char[strlen(first)+1];
        assert( firstName != 0);
        strspy( firstName, first);
 
........аналогично для last.....
}
Далее в мэйне:
C++
1
Employee *e1Ptr = new Employee ("Вася", "Пупкин");
Вопрос:необходимо небольшое разъяснение по поводу порядка выделения памяти при объявлении указателя на Employee и в когструкторе.
заранее спасибо.
Порядок следующий. Сначала в стеке создается переменная e1Ptr, затем вступает в действие инициализатор этой переменной, который является значением выражения с оператором new. Этот оператор сначала выделяет память, равную размеру класса. Затем запускает конструктор этого класса. Конструктор последовательно выделяет память под свои члены класса firstName и lasrName

Далее в функции main по завершению работы с этим объектом, вы должны удалить память выделенную 1) для членов объекта firstName и lasrName и для самого объекта. Поэтому вы должны написать деструктор вашего класса, который будет вызван, когда вы напишите опеоатор

C++
1
delete e1Ptr;
Yandex
Объявления
22.08.2011, 16:58     Немного о динамическом выделении памяти ...
Ответ Создать тему
Опции темы

Текущее время: 02:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru