Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

Народное голосование ПРЕМИИ РУНЕТА-2007!
Голосуем за RusFAQ.ru >>

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 915
от 23.11.2007, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 476, Экспертов: 75
В номере:Вопросов: 3, Ответов: 4


Вопрос № 109942: Здравствуйте, эксперты! Как исправить следующую программу (по возможности только конструктор копии и деструктор), чтобы деструктор освобождал память. Нужно сделать так чтобы память очищалась в классе, а не int main() программе. ...
Вопрос № 109971: Здравствуйте уважаемые эксперты!Прошу прощение за повторение!Я неделю назад задавал вопрос по задачкам, на что получил ответ, решение этих задач на С++, не могли бы вы написать эти задачки на С! Заранее спасибо! 1.Подсчитать, сколько элементо...
Вопрос № 109989: Добрый день, уважаемые эксперты. Помогите написать программу на С. Задание: В файле хранится информация о товаре на складе: код, наименование, цена. Переписать эти данные в новый файл, отсортировав товар по стоимости, исключив предварительно товар с ...

Вопрос № 109.942
Здравствуйте, эксперты!
Как исправить следующую программу (по возможности только конструктор копии и деструктор), чтобы деструктор освобождал память.
Нужно сделать так чтобы память очищалась в классе, а не int main() программе.

Приложение:

Отправлен: 18.11.2007, 08:43
Вопрос задал: Tito (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mystic
Здравствуйте, Tito!
Для начала необходимо подправить конструктор:
Long(char *s){
a = new char[max_size]; //Здесь Вы выделяете память в max_size байт
a = s; //А здесь Вы просто меняете значение указателя, т.е. а теперь указывает не на выделенную память, а на строку, переданную ей в параметре, а это не есть хорошо
}
Вместо a = s напишите strcpy(a, s); (точно параметров не помню, но главное, что функция эта). Так Вы скопируете строку s в строку a. В противном случае выделение памяти не имеет смысла, ведь Вы теряете указатель на эту выделенную память.
Далее в конструкторе копирования та же ситуация. Вам необходимо именно скопировать строку, а не использовать указатель на ту же строку. Просто добавьте функцию strcpy(s, ob.a); (опять же точно параметров не помню).
Соответственно с деструктором тогда будет все в порядке (если не копировать строки, а использовать указатели на одну и ту же строку, то первый delete[] ее удалит, а остальные указатели будут указывать на удаленную область памяти).

ЗЫ: насчет "7
Ответ отправил: Mystic (статус: 7-ой класс)
Ответ отправлен: 18.11.2007, 10:08

Отвечает: Воробьёв Алексей Викторович
Здравствуйте, Tito!

Деструктор будет вызваться при выходе из блока, где определена локальная переменная. Поэтому, если Вам так сильно надо освободить память в указанном месте, то делайте так:

Long z;
{
Long x("4"), y("3");
z = x + y; // вот здесь после возврата значения (x+y)
// память занимаемая (x+y) должна очиститься
}
cout << z.get();

или даже так:
z = Long("4") + Long("3");
Ответ отправил: Воробьёв Алексей Викторович (статус: Студент)
Ответ отправлен: 19.11.2007, 05:38


Вопрос № 109.971
Здравствуйте уважаемые эксперты!Прошу прощение за повторение!Я неделю назад задавал вопрос по задачкам, на что получил ответ, решение этих задач на С++, не могли бы вы написать эти задачки на С!
Заранее спасибо!
1.Подсчитать, сколько элементов встречается в данном массиве наибольшее число раз.
2.Найти минимум функции Х(в квадрате)-Е(в степени -х) методом дихотомии.
Отправлен: 18.11.2007, 12:40
Вопрос задал: Pimp (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Гальцов Андрей
Здравствуйте, Pimp!

Держите задачу №1:
За массив взят одномерный массив целочисленных - array[10]

Приложение:

---------
"The more you know, the less you need to show"

Ответ отправил: Гальцов Андрей (статус: Студент)
Ответ отправлен: 19.11.2007, 22:15


Вопрос № 109.989
Добрый день, уважаемые эксперты. Помогите написать программу на С. Задание: В файле хранится информация о товаре на складе: код, наименование, цена. Переписать эти данные в новый файл, отсортировав товар по стоимости, исключив предварительно товар с кодом Х (вводить с клавиатуры).
Заранее большое спасибо!
Отправлен: 18.11.2007, 14:29
Вопрос задала: Svetapestova (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: CruelHity
Здравствуйте, Svetapestova!
Вот пожалуста пример задачи! А там вы можете модефицироватье ее как хочете!
Файл in.txt доожен выглядеть так:
//***********
1 apple 3.2
2 pear 32.1
3 Apricot 11.1
/************
Удачи!
Будут вопросы спрашивайте))

Приложение:

Ответ отправил: CruelHity (статус: 5-ый класс)
Ответ отправлен: 18.11.2007, 16:47
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.63 от 22.11.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное