![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
хм, моя училка по программированию меня жестко наколола ![]() --------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
console |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.2.2007 Где: Belarus::Minsk Репутация: 1 Всего: 3 |
cplusplusDOTcom:
ptr (см в коде)
Указатель на блок памяти, зарезервированный malloc, calloc или realloc, необходимый для переопределения размера... Если указатель нулевой, резервируется новый блок и функция realloc возвращает указатель на нее... |
|||
|
||||
Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Я затронул эту тему из за того что в новокупленой книжке было написано что лучше использовать new/delete, так что Mayk, с тобой согласен.
Вот только не могу понять какой плюс от вызова конструктора при использовании new, объясните плиз! console, как вообщем realloc пользоваться я знаю, т.к. курсовой я уже написал, а это думаю его немного улучшить ![]() |
|||
|
||||
fantast |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
сначало ch указывал на 100 байт, а ты его (массив) расширели до 150 байт --------------------
Эпитафия: Он старался. Неизвестный |
||||
|
|||||
Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
а что произойдет если размер указать не 150, а 50, утечка памяти?
|
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
не лишнее просто отрежется
--------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
console |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.2.2007 Где: Belarus::Minsk Репутация: 1 Всего: 3 |
У тебя урежется массив... и исчезнут данные, которые были в диапазоне [51;100]
|
|||
|
||||
Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Тогда получается, что функцию free можно использовать 1 раз при завершении программы?
И воторой вопрос немного не потеме: где лучше писать пользовательские функции. Т.е. у меня есть модуль под класс и надо еще несколько функций для общего использования в проге. Надо ли их выносить в отдельный cpp и если да то надо ли создавать h файл для заголовка функций? |
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
дело твое, я б сказал индивидуальное
к чему больше душа лежит там и описывай свои функции если проект пишет несколько людей то да, удобнее это не объединять в один cpp, а каждый делает свою часть кода, запихивает в свой cpp, а дальше дело компилятора (если конечно все пространство имен у них были верно согласованы)
если ты используешь free то динамически выделенный массив перестает существовать, а указатель, что раньше указывал на массив будет указывать на случайное место в памяти, другими словами он будет пуст. если есть необходимость можно его опять пустить в дело, например опять выделить динамический массив, или использовать его как обычный указатель, вобщем дело хозяйское --------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
console |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.2.2007 Где: Belarus::Minsk Репутация: 1 Всего: 3 |
Можно по разному... лучше конечно вынести в отдельный .cpp и .h
|
|||
|
||||
nickless |
|
||||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Если выделять память под сложные объекты, то нужен вызов конструктора для их инициализации, или прийдётся извращатся через дополнительный вызов какого-нибудь метода, который делает то же, что делает new + конструктор. Например:
Получаем:
-------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||||
|
|||||||
Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Возникла следующая проблемма. Все работает на ура, но при выходе из програмы выскакивает ошибка. Я это связываю с действиями деструктора, т.к. если его закоментировать, то все ок
|
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
проверяй свой код на правильность работы с памятью. выходы за переделы массива и т.п. Добавлено через 36 секунд
Ну можно позвать и конструктор вручную. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |