4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51

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

22.08.2011, 01:38. Показов 858. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
объявление данных в классе:

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 и в когструкторе.
заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.08.2011, 01:38
Ответы с готовыми решениями:

Вопрос о динамическом выделении памяти
Доброго времени суток всем. у меня вопрос к работе следующего кода: delete values; // Удаляем массив из кучи ...

Ошибка на динамическом выделении памяти
программа ниже безупречно выполнялась под С++Builder 6.0 (консольное приложение). При переводе ее в VC6.0 (кроме сделанных исправлений -...

Ошибка при динамическом выделении памяти
Я не понимаю почему, но почему-то пример по динамическому выделению памяти, взятый с этой веб-страницы: http://cppstudio.com/post/9555/...

2
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
22.08.2011, 04:33
С начало выделятся память под новый Employee потом под firstName и соответственно под lastName.
0
Заблокирован
22.08.2011, 16:58
Цитата Сообщение от 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;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2011, 16:58
Помогаю со студенческими работами здесь

Ошибка при динамическом выделении памяти
почему у меня возникет ошибка вот тут struct TOVAR *New = new struct TOVAR; пишит недопустимый неполный тип на struct подчеркивает...

Вопрос о динамическом выделении памяти для строки
Как можно реализовать динамическое выделение для строки, т.е. например у меян есть указатель - char *c. Мне необходимо ввести строку с...

Создание исключения при динамическом выделении памяти
Вот код из учебника в нем мне все понятно. #include<iostream> #include<cstdlib> //exit() #include<new> using std::cout;using...

Выдаёт ошибку при динамическом выделении памяти
В строчке cout << "Значение по адресу " << p << " равно: " << *p << endl; Компилятор ругается: используется потенциально...

Выравнивание при динамическом выделении памяти под массив
Добрый вечер. Для того, чтобы выделить память под массив динамически и выровнять указатель по 16 байтам, в разных ОС существуют разные...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Оптимизация производительности Express.js бэкенда
Reangularity 23.05.2025
Express. js заслуженно остаётся одним из самых популярных инструментов для создания бэкенда, но даже он не застрахован от проблем с производительностью. Многие разработчики сталкиваются с ситуацией,. . .
Продвинутая обработка данных с LINQ в C#
stackOverflow 23.05.2025
LINQ (Language Integrated Query) — это фундаментальное изменение парадигмы работы с данными в C#. Простые запросы Where и Select знакомы любому разработчику, но настоящая мощь LINQ раскрывается в. . .
Инфраструктура PKI и сертификатов безопасности
Mr. Docker 23.05.2025
PKI (Public Key Infrastructure) — это невидимый фундамент цифрового доверия, без которого современный интернет просто рассыпался бы как карточный домик. За этой аббревиатурой скрывается целый. . .
Аутентификация OAuth в Python
py-thonny 22.05.2025
OAuth (Open Authorization) — это целый стандарт для делегированного доступа. Звучит занудно? Давайте проще: OAuth позволяет приложениям получать доступ к информации пользователя на сторонних сервисах. . .
Хеширование и соль паролей в веб-приложениях C#
stackOverflow 22.05.2025
Когда-то в начале своей карьеры я тоже грешил простейшими подходами к хранению паролей – MD5-хеширование казалось верхом защиты. Но технологии не стоят на месте, вычислительные мощьности растут, и. . .
Генераторы Python для эффективной обработки данных
AI_Generated 21.05.2025
В Python существует инструмент настолько мощный и в то же время недооценённый, что я часто сравниваю его с тайным оружием в арсенале программиста. Речь идёт о генераторах — одной из самых элегантных. . .
Чем заменить Swagger в .NET WebAPI
stackOverflow 21.05.2025
Если вы создавали Web API на . NET в последние несколько лет, то наверняка сталкивались с зелёным интерфейсом Swagger UI. Этот инструмент стал практически стандартом для документирования и. . .
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru