Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2010, 20:48   #1
Dj-IIyIIc
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 13
По умолчанию Выделение памяти в С++

Здравствуйте!Пытаюсь разобраться в основах языка.Уже голова кипит...
Пока возникли такие вопросы:
Нужно создать массив указателей,содержащий ссылки на уже существующие в памяти объекты примерно так:
Код:
Type*source1=new Type();
Type*source2=new Type();//переменные содержащие ссылки на 2 объекта
Type*type;//нужно,чтобы &type[0]=&source1[0],&type[1]=&source2[0]
но если писать type[0]=source1[0],то объект просто клонируется.Что делать?
Потом вопрос по опертору delete:иногда при использовании delete[] возникают ошибки,причем если просто создать и удалить переменную,ошибок не возникает.Но при выполнении программы иногда(!) возникают ошибки при вызове деструктора.Я извиняюсь,но конкретный код сейчас выложить не могу.Что просто теоретически может быть?За чем нужно следить при написании деструктора класса?
И еще если delete удаляет массив ссылок(по адресу &type),что происходит с памятью по адресу &type[0]?она остается занятой?
Dj-IIyIIc вне форума Ответить с цитированием
Старый 17.10.2010, 21:18   #2
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
По умолчанию

Читаем до просветления: http://alfags.ru/?cat=31
sergey.d вне форума Ответить с цитированием
Старый 18.10.2010, 07:06   #3
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Type*source1 [4] - массив 4 - х указателей
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 18.10.2010, 12:26   #4
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию

При написании деструктора класса следи за тем чтобы один и тот же участок памяти не освобождалася дважды. Это чаще всего происходит при передаче объекта в какую нибудь функцию в качетве параметра. При этом создается копия объекта с которым работает ф - я и деструкторы обоих объектов (копии и оригинала) освобождают один и тот же участок памяти - ведь когда ф - я завершает работу она же вызывает деструктор объекта - копии.
Fog вне форума Ответить с цитированием
Старый 18.10.2010, 14:39   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
При написании деструктора класса следи за тем чтобы один и тот же участок памяти не освобождалася дважды.
Проще (да и правильнее) уж тогда в конструкторе копирования производить выделение памяти и полное копирование информации. Тогда обычный деструктор будет работать правильно и с правильными данными.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделение памяти Артем1256 Общие вопросы C/C++ 1 13.11.2009 16:38
Выделение памяти mutabor Общие вопросы Delphi 8 26.08.2009 18:16
До выделение памяти MAKTE Общие вопросы C/C++ 4 20.05.2008 21:34
Выделение памяти antoha.by Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 20:04
выделение оперативной памяти Alar Общие вопросы Delphi 0 29.10.2006 21:56