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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 14:18   #21
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
mutabor
Ну я не локальные имел ввиду. Как раз локальные переменные потерять легко - это же стек. Я имел ввиду глобальные переменные. И автор вообще говорил о результате функции. Разве он в стеке сидит?
I'm learning to live...
Stilet вне форума
Старый 17.08.2010, 14:22   #22
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
И автор вообще говорил о результате функции. Разве он в стеке сидит?
А где? Почему тогда можно получить стек оверфлоу рекурсивно вызывая функцию?

p.s. Я не утверждаю, а скорее спрашиваю, я вообще залез в эту тему скорее знаний нахвататься на шару, чем умничать
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума
Старый 17.08.2010, 14:26   #23
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
Прямо крик души . Вам мало уделяют внимания?
Спасибо конечно тебе за предложение, но я женат :D
Цитата:
Все верно, ТС, кажись, интересовало не это.
Ну придёт - увидим, что он имел ввиду.
Цитата:
Я конечно не гуру, так, начинающий. Но все же, чего тебе не понятно? Видишь ли гуру очень занятые, ну там восстанавливают галактики, спасают экономики и т.д. И отвлекать их по пустякам не стоит .
Ну раз ответили, значит Гуру?! А по поводу экономики... Хм... Что-то мы никак из экономической попы не вылезем только. На "протяжении всей России", что на моём веку.
Цитата:
Ну дык, формально этот участок памяти свободен, туда в любой момент могут быть записаны другие данные (а могут и нет). Или менеджер памяти должен был заниматься мартышкиным трудом и писать туда нули?
Очень хотелось бы... А может ещё произойти ситуация, в которой моя другая подпрограмма обратится по этому адресу, где данных, как некоторые думают нет, а на самом деле есть. И эти данные например не те, что ожидаются, не произойдёт ли такая ошибка, которую очень трудно отловить? И вот тут спорить, думаю, бесполезно. В этом и вся соль.
Цитата:
Ну так рассмотрите следующий пример:
Я не уловлю никак суть вашего примера. По сути то же самое, только переменная кучная.
Цитата:
По любому имя переменной связано с конкретным блоком памяти, и никакими силами нельзя отцепить ее от своего значения.
Да, мы не можем обратиться к ней по имени (тот пример с result), но прекрасно делаем это по указателю.
r9m вне форума
Старый 17.08.2010, 14:41   #24
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Очень хотелось бы... А может ещё произойти ситуация, в которой моя другая подпрограмма обратится по этому адресу, где данных, как некоторые думают нет, а на самом деле есть. И эти данные например не те, что ожидаются, не произойдёт ли такая ошибка, которую очень трудно отловить? И вот тут спорить, думаю, бесполезно. В этом и вся соль.
Это говорит о плохом стиле кода при работе с указателями, если программа может так споткнуться Указатели следует обнулять, экземпляры классов уничтожать через FreeAndNil, и, соответственно, проверять перед чтением.
Глобальные переменные и члены класса, кстати, делфи при создании инициализирует самостоятельно (integer - 0, pointer - nil...), локальные - нет (локальные string i variant только инициализирует, вроде).
пыщь

Последний раз редактировалось JTG; 17.08.2010 в 14:47.
JTG вне форума
Старый 17.08.2010, 14:44   #25
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему тогда можно получить стек оверфлоу рекурсивно вызывая функцию?
Потому что сам вызов функции предполагает сохранять в стеке указатель на команду, следующую за командой ее вызова:
Код:
push eip
jmp <процедура>
Вот в стеке эти eip и набиваются до посинения. И параметры процедур тут совершенно ни при чем
Цитата:
Да, мы не можем обратиться к ней по имени (тот пример с result), но прекрасно делаем это по указателю.
Да нет. Я имел ввиду что описав переменные
Var i,k:integer;
Я гарантированно знаю что как бы то ни было i не будет указывать на ячейку k
Но: Var i,k:TObject
Вполне допустимо чоб i указывало на то же что и к
I'm learning to live...
Stilet вне форума
Старый 17.08.2010, 14:46   #26
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
И параметры процедур тут совершенно ни при чем
Могу авторитетно заявить - очень даже при чем. Если параметры тяжелые, переполнение стека происходит значительно быстрее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума
Старый 17.08.2010, 14:49   #27
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
mutabor
Хитрец, выкрутился ))))
I'm learning to live...
Stilet вне форума
Старый 17.08.2010, 14:53   #28
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
Это говорит о плохом стиле кода при работе с указателями, если программа может так споткнуться Указатели следует обнулять, экземпляры классов уничтожать через FreeAndNil, и, соответственно, проверять перед чтением.
Да это всё понятно, но знаете ведь сами, сколько встречается моментов (где-то пропустил, что-то забыл итд). Да и в сети такое постоянно. Зайти вон на васм. Люди заполняют буффер, предворительно его не очищая, меньшим по длине значением, а потом удивляются, откуда мусор в строке или почему функция падаети.

Ну, мы уже как бы не в ту вообще степь, где ж автор торжества ?
r9m вне форума
Старый 17.08.2010, 14:55   #29
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от r9m Посмотреть сообщение
Спасибо конечно тебе за предложение, но я женат :D
Да не, я насчет курса психотерапии, чтобы в депрессию не впадал .

Цитата:
Ну раз ответили, значит Гуру?! А по поводу экономики... Хм... Что-то мы никак из экономической попы не вылезем только. На "протяжении всей России", что на моём веку.
Да не гуру, это я шалю малыш...

Цитата:
Очень хотелось бы... А может ещё произойти ситуация, в которой моя другая подпрограмма обратится по этому адресу, где данных, как некоторые думают нет, а на самом деле есть. И эти данные например не те, что ожидаются, не произойдёт ли такая ошибка, которую очень трудно отловить? И вот тут спорить, думаю, бесполезно. В этом и вся соль.
Ну как JTG сказал, если такая ситуация возникнет, значит не подумавши написал или просто руки не с того места растут (или не туда тянутся). Могу добавить к его словам, что перед использованием функции ее результат также желательно обнулять принудительно - экономит время во время отладки.

Цитата:
Да это всё понятно, но знаете ведь сами, сколько встречается моментов (где-то пропустил, что-то забыл итд). Да и в сети такое постоянно. Зайти вон на васм. Люди заполняют буффер, предворительно его не очищая, меньшим по длине значением, а потом удивляются, откуда мусор в строке или почему функция падаети.
Есть такое, но не надо оправдывать свои ошибки тем, что "у меня как у всех". Ошибки нужно устранять, а еще лучше пытаться выработать методику написания кода, при которой многие из ошибок просто не могут возникнуть в принципе. Именно поэтому и говорят об объектных переменных, а не потому что не знают, что Integer сразу же не стирается...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 17.08.2010 в 15:05.
Utkin вне форума
Старый 17.08.2010, 15:07   #30
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
Ну как JTG сказал, если такая ситуация возникнет, значит не подумавши написал или просто руки не с того места растут (или не туда тянутся). Могу добавить к его словам, что перед использованием функции ее результат также желательно обнулять принудительно - экономит время во время отладки.
Да у меня всё с руками нормально -слава богу.

Цитата:
Есть такое, но не надо оправдывать свои ошибки тем, что "у меня как у всех". Ошибки нужно устранять, а еще лучше пытаться выработать методику написания кода, при которой многие из ошибок просто не могут возникнуть в принципе.
Ох ну какой ты умный, ты где ж взял то, что я говорил про свои ошибки? Хотя бывает - не спорю. Бывает даже и в таких ситуациях. Спорю, они бывают и у тебя. У всех бывают. Все мы -люди.
Цитата:
Да не гуру, это я шалю малыш...
Так не строй его из себя
r9m вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна функция или процедура для того чтобы программа стала резидентной! star007 Помощь студентам 3 22.03.2010 08:59
Память, (что тяжелее:функция или процедура) WF7 Паскаль, Turbo Pascal, PascalABC.NET 4 08.06.2009 08:09
Процедура или функция, удаляющая окаймляющие пробелы в строке (Delphi) Аццкий прогер Помощь студентам 2 03.03.2009 04:12
Что лучше assembler или с++? Alabay Помощь студентам 13 11.01.2009 12:21