![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Rexar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 14.12.2005 Репутация: 0 Всего: 0 |
procedure perem;
var i: integer; begin ShowMessage(IntToStr(i)); end; Выводит какое-то значение ! Т.е. создаётся непустая переменная. Кто знает почему, и как с эти бороться ! P.s. - обнулять по типу i := 0 тупо и неразумно; А если у меня ТИП данных, где 100 таких переменных, мне что их все по очереди обнулять ? Проверял на Delphi 7 и Delphi 2005 ! Может надо где-то что-то прописать чтобы заработало ? |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
||||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
Вот такие они, локальные переменные, RTFM.
FillChar. |
|||
|
||||
| Rexar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 14.12.2005 Репутация: 0 Всего: 0 |
И как тут быть ? |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
Опиши не как Record, а как Class, поля класса при его создании обнулятся...
|
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
Либо:
|
|||
|
||||
| Rexar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 14.12.2005 Репутация: 0 Всего: 0 |
А если запись будет содержать вложенные записи, то тоже будет работать ? В данном примере вызов процедуры FillChar проинициализирует строки пустыми значениями, такой подход был нормальным в ранних версиях Delphi и Borland Pascal, но недопустим в последних версиях, в которых тип string по умолчанию соответствует типу LongString и суть указатель. Если значения строк перед инициализацией были не пусты, то мы получим утечку памяти. Как вы это прокомментируете ? Это сообщение отредактировал(а) Rexar - 25.4.2008, 21:51 |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Что тут комментировать то? Компилятор не может предсказать все твои действия, а если самому лень или не хватает ума - это твои проблемы. Надоедает, когда пишут такой бред, ощущение, что в программисты идут с мыслью, что стоит только компилятору сказать, что тебе надо - все будет готово. -------------------- ![]() |
|||
|
||||
| Rexar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 14.12.2005 Репутация: 0 Всего: 0 |
Во первых я - металлург ! И не надо возгласов "Оно и видно" ! И вобще-то я ищу рациональное решение ! И я предположил, что возможно в компиляторе это настраивается, т.к. по сути обнуление переменных надо далеко не всегда необходимо и поэтому обнуление всех переменных будет уменьшать скорость работы программы, поэтому я думаю что создатели делфи и не сделали обнуление включенным параметром ! И вобще я просил прокомментировать предыдущую цитату, т.к. я не совсем ясно понимаю её смысл ! Как именно я получу утечку памяти ? Это сообщение отредактировал(а) Rexar - 26.4.2008, 15:55 |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
Это не повод для того, чтобы читать ответы, данные тебе ВЫБОРОЧНО... Вариант с классами тебя чем не устроил, можно полюбопытствовать?
Ну, возможно, ты и знаешь, что это цитата, но здесь, прости, не форум телепатов. Если хочешь, чтоб об этом узнали и другие, можно было выделить цитату специальным тегом (хинт, посмотри слева от редактора есть такие круглые кнопочки, что на верхней написано?), и дать ссылку, ОТКУДА эта цитата выдрана. |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Очень просто. Ты обнулишь указатели на строки, но сами строки останутся висеть в памяти. Вообще, хорошая традиция, всегда в ручную обнулять переменные. -------------------- ![]() |
|||
|
||||
| Rexar |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 14.12.2005 Репутация: 0 Всего: 0 |
Т.е. будет постоянно увеличиваться потребляемая программой память ?
Ок, учту !
Т.е. при создании класса TProtocol будут обнуляться переменные во всех record, которые описаны в этом классе ? Это сообщение отредактировал(а) Rexar - 26.4.2008, 20:28 |
||||||
|
|||||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
Вообще, если речь идет конкретно о строках
|
|||
|
||||
| Rexar |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 14.12.2005 Репутация: 0 Всего: 0 |
А если я обнуляю внутри функции, то при выходе из функции строки уберуться из памяти ? |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |