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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2012, 14:29   #11
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию

сколько людей столько и мнений,так я делаю вывод ,что обнулить переменную объязательно при той ситуации ,которую я указал .Это правильный вывод ?
aleksskay вне форума Ответить с цитированием
Старый 15.05.2012, 21:35   #12
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от aleksskay Посмотреть сообщение
Это правильный вывод ?
aleksskay, если ты учишься - настоятельно рекомендую инициализировать все переменные явно.

Серж, с требованиями языка не поспоришь )), разве что сделать свой прекомпайлер.. (типошутко))

с-андриано, я согласен полностью про обучение. Но.. (извиняюсь за оффтоп, про другие языки не я начал) системная функция malloc дает тебе зануленную память. Насколько я понимаю, это есть требование безопасности - процесс не должен иметь возможность копаться в мусоре от другого процесса. Так или иначе - это ЕСТЬ. Если ты берешь несколько байт - накладными расходами на обнуление можно пренебречь. Но если ты берешь сотни мег, это может повлиять на призводительность. Короче, я все же (при условии понимания, что делаешь) рекомендую по крайней мере задуматься над этим.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 15.05.2012, 21:50   #13
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Но если ты берешь сотни мег, это может повлиять на призводительность. Короче, я все же (при условии понимания, что делаешь) рекомендую по крайней мере задуматься над этим.
Логично.
Например, я, если следующим оператором после getmem идет blockread с тем же размером, обнуление памяти между ними не делаю.
s-andriano вне форума Ответить с цитированием
Старый 15.05.2012, 23:24   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от TinMan
системная функция malloc дает тебе зануленную память. .... Но если ты берешь сотни мег, это может повлиять на призводительность.
Цитата:
Например, я, если следующим оператором после getmem идет blockread с тем же размером, обнуление памяти между ними не делаю.
Ребятки. Давайте расставим точки над I
я не призываю ЛЮБУЮ переменную обнулять. Упаси Господи!

Я предлагаю заносить ТО, что потом будет использоваться.

например, если мы хотим ввести переменную N с клавиатуры,
то будет БЕССМЫСЛЕНО писать:
Код:
var N : integer;
begin
   N := 0;
   Readln(N);
то же относится и к BlockRead(f, N), например.


но я КАТЕГОРИЧЕСКИ не рекомендовал бы писать что-то вроде
Код:
type MyArray = array[1..10] of integer;
var tt : ^MyArray;
  i: integer;
begin
  New(tt);
  for i:=2 to 10 do tt^[1] := tt^[1] + tt^[i];
  WriteLn(tt^[1]); // кто может мне сказать, какое число будет напечатано?! :)
  Dispose(tt);
  Readln
end.
т.е. ОБРАЩАТЬСЯ к ячейке памяти/переменной ДО ТОГО как туда что-то Ваш код поместил. Иначе это русская рулетка, а не программирование!

Последний раз редактировалось Serge_Bliznykov; 15.05.2012 в 23:36.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2012, 00:20   #15
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Цитата:
т.е. ОБРАЩАТЬСЯ к ячейке памяти/переменной ДО ТОГО как туда что-то Ваш код поместил. Иначе это русская рулетка, а не программирование!
я полностью согласен, обнуление очень нужная вещь
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 16.05.2012, 01:00   #16
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
обнуление очень нужная вещь
а можно я буду не обнуливать (или зануливать?) ?
=master= вне форума Ответить с цитированием
Старый 16.05.2012, 22:08   #17
Mr.BL@CK
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 27
По умолчанию

Можно,но лучше не надо...а то потом сам не поймешь,где бокопоры.Сам тысячу раз так обламывался
Mr.BL@CK вне форума Ответить с цитированием
Старый 12.10.2013, 00:16   #18
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Цитата:
Здесь я хочу чтобы переменная j была равной 0,но я ее не обнулил
удовлетворившиеся тем ,что она по умолчанию равна нулю ,так можно делать в турбо паскале 7.0
Но это все равно не надежно. А если код будет компилироваться другой версией компилятора? Это приведет к непредсказуемым последствиям (AV например). Так, как в не инициализированной переменной может хранится "мусор" http://cybersite.ucoz.net/blog/delph.../2013-04-05-14
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение переменной y в зависимости от значения переменной х Rishi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.05.2011 20:25
обнуление kuzjaca Microsoft Office Access 7 24.02.2011 10:03
gcc inline assembler - обнуление переменной gvf Помощь студентам 1 13.06.2010 19:33
Обнуление переменной [MI_nor] Общие вопросы C/C++ 3 05.11.2008 18:01
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47