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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 10:01   #11
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Да что вы такое говорите? Даже если result будет возвращать целое - оно так и останется в памяти храпеть. До конца закрытия программы, или если что-то ее не затрёт своим значением. Могу спорить.
r9m вне форума
Старый 17.08.2010, 10:05   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Да о всех рядах типов, можно для начала Integer;
Тип типу рознь
Простыие ординальные типы ложатся в регистр.
Типы типа Строки в массив памяти, а указатель на них с регистр. Тоже самое с объектами, но в отличие от строк менеджер памяти за ними не следит - так что в твоем случае оправдано использование процедуры только при работе с объектами.
I'm learning to live...
Stilet вне форума
Старый 17.08.2010, 10:27   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если ты не возвращаешь экземпляры класса, то о результатах можешь не беспокоиться.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума
Старый 17.08.2010, 10:59   #14
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Ну ладно, видимо никто не понимает о чём я толкую.
Цитата:
Если это объект то да. Жить он будет пока прога не закроется.
Дык, интегер как видно тоже не хварает. Живёт себе. Даже после отработки функции.

Гуру, объясните мне-дураку тогда следующий пример:

Код:
var
  pInt:PInteger;
  intA:Integer;

procedure nop;assembler;
asm
  nop
end;

function foo:Integer;
begin
  pInt:= addr(result);
  result := $C0DE;
end;

begin
  foo;
  ; {на этом месте функция отработала, все переменные "освободились" итд }
    {Так почему в памяти значение переменной остаётся? Чем это x3рoвато =?}
    {И это один хрен переменная, только через указатель}
    {И мы можем с ней работать и писать ее и читать}
  nop;
  pInt^:=$D00DE;
  IntA:=pInt^;
  nop;
end.
С локальными переменными всё тоже самое!
Изображения
Тип файла: jpg wtf1.jpg (36.6 Кб, 149 просмотров)
Тип файла: jpg wtf2.jpg (40.0 Кб, 146 просмотров)
r9m вне форума
Старый 17.08.2010, 11:00   #15
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

2 VintProg:

Правило №1: учите ассемблер.

Когда вы будете представлять, что творится под капотом языка, вы просто не будете задавать такие бессмысленные вопросы, не которые просто нет ответа, потому что сам вопрос не имеет смысла.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.

Последний раз редактировалось GunSmoker; 17.08.2010 в 11:09.
GunSmoker вне форума
Старый 17.08.2010, 12:51   #16
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от r9m Посмотреть сообщение
Ну ладно, видимо никто не понимает о чём я толкую.
Прямо крик души . Вам мало уделяют внимания?

Цитата:
Дык, интегер как видно тоже не хварает. Живёт себе. Даже после отработки функции.
Все верно, ТС, кажись, интересовало не это.

Цитата:
Гуру, объясните мне-дураку тогда следующий пример:
Я конечно не гуру, так, начинающий. Но все же, чего тебе не понятно? Видишь ли гуру очень занятые, ну там восстанавливают галактики, спасают экономики и т.д. И отвлекать их по пустякам не стоит .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума
Старый 17.08.2010, 13:04   #17
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Живёт себе. Даже после отработки функции.
Ну дык, формально этот участок памяти свободен, туда в любой момент могут быть записаны другие данные (а могут и нет). Или менеджер памяти должен был заниматься мартышкиным трудом и писать туда нули?
пыщь
JTG вне форума
Старый 17.08.2010, 13:18   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от JTG
Ну дык, формально этот участок памяти свободен, туда в любой момент могут быть записаны другие данные (а могут и нет). Или менеджер памяти должен был заниматься мартышкиным трудом и писать туда нули?
+100

r9m, Вас смущает, что в памяти, которая освобождена, есть записанное туда ранее значение?!
Ну так рассмотрите следующий пример:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var P : ^Integer;
begin
   New(P);
   P^ := 1234;
   Dispose(P); // ОСВОБОДИЛИ ПАМЯТЬ
   Button1.Caption := IntToStr(P^); // и что по ссылке в освобождённой памяти?!
end;
Serge_Bliznykov вне форума
Старый 17.08.2010, 13:25   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Дык, интегер как видно тоже не хварает.
Верно, вот только я отделил этот тип от объектных потому что ни разу не видел чтоб на переменку (заранее зарезервированную в инструкции var) не было ни одного якоря. По любому имя переменной связано с конкретным блоком памяти, и никакими силами нельзя отцепить ее от своего значения.
Я не имею ввиду динамические переменные, и именно статические стандартные типы Делфи. А вот создать обьект без якоря - запросто. И даже переменная соответствующего класса имеет возможность отцепится от этого обьекта.
Я не прав?
I'm learning to live...
Stilet вне форума
Старый 17.08.2010, 13:50   #20
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov
Хотя, если нужно вернуть несколько значений, тогда без процедуры просто не обойтись.
Можно возвращать запись. Это конечно не так удобно, как в том же Питоне например, в к-ром функция может возвращать много результатов, но все таки можно.

Stilet, т.е. получается при старте программы резервируется на стеке память под все локальные переменные к-рые есть в коде? Если это так, то ответ на вопрос темы такой - ничего страшного в этом нет, это не так много памяти обычно, тем более под стек в любом случае программа резервирует память, в ней и живут локальные переменные, и ты ее никак не освободишь до окончания программы, разве что в настройках компилятора уменьшить стек. Результаты функций также в стеке живут, если это простой тип - то непосредственно сама переменная, если объект - то ссылка на него.
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:03.
mutabor вне форума
Закрытая тема


Купить рекламу на форуме - 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