Вышла новая версия компилятора FreePascal

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Вышла новая версия компилятора FreePascal

Сообщение Дож » 27.12.2015 14:33:41

Mikhail писал(а):
Дож писал(а):Хоть тут нет технических утечек, на практике это имеет такие же неприятные последствия, т.е. внезапное OutOfMemory, которого вроде бы быть не должно

Это ошибка в плохо спроектированном программном модуле.

Этого мы не узнаем, пока не спросим написавшего модуль (или не прочтём документацию на модуль). Возможно, что он просто забыл об освобождении.

Опять же, например, если алгоритм предполагает сначала загрузку в память всех данных, а потом их полную обработку, а данных слишком много и получишь OutOfMemory это что утечка?

Это не утечка, потому что программист ожидает и осознаёт, что он грузит в память большой участок данных. Он не «забыл что-то освободить». Между утечками и загрузкой большого блока в память, повторюсь, огромная и принципиальная разница, гораздо бо́льшая, чем между технической утечкой указателя и логической утечкой в Java.

Если временные данные не влезли в ОЗУ это утечка?

Это очень сильно зависит от характера использования временных данных, может быть и так, и так. Если в каком-то алгоритме есть условные моменты «захвата памяти под временные данные» и «освобождения этой памяти» (после которой, согласно алгоритму, эта память не нужна), но в реальной программе, реализующей этот алгоритм, выходит так, что память под временные данные систематически не освобождается и не освободится, то это почти наверняка утечка, а не «программист так и задумывал».
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Вышла новая версия компилятора FreePascal

Сообщение Mikhail » 27.12.2015 14:52:35

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

Ну он просто вызывает подпрограмму и ничего не осознает, а разработчик неявно предполагал, что данные поместятся в ОЗУ. Разумеется, предполагается что данные можно обрабатывать и целиком и порционно.
Дож писал(а):программист так и задумывал

Он об этом ничего не думал, ему сказали, что GC все решит. :mrgreen:
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вышла новая версия компилятора FreePascal

Сообщение kazalex » 27.12.2015 14:53:27

Mikhail писал(а):В интернете много чего можно нагуглить и что из этого?

Похоже, мы присутствуем при явлении носителя истины народу...

Mikhail писал(а):Не все что написано на заборе есть истина.

Забор забору рознь. Вот, например, что написано на заборе майкрософт:
Definition of memory leak
A memory leak occurs when memory is allocated in a program and is never returned to the operating system, even though the program does not use the memory any longer. The following are the four basic types of memory leaks:

In a manually managed memory environment: Memory is dynamically allocated and referenced by a pointer. The pointer is erased before the memory is freed. After the pointer is erased, the memory can no longer be accessed and therefore cannot be freed.
In a dynamically managed memory environment: Memory is disposed of but never collected, because a reference to the object is still active. Because a reference to the object is still active, the garbage collector never collects that memory. This can occur with a reference that is set by the system or the program.
In a dynamically managed memory environment: The garbage collector can collect and free the memory but never returns it to the operating system. This occurs when the garbage collector cannot move the objects that are still in use to one portion of the memory and free the rest.
In any memory environment: Poor memory management can result when many large objects are declared and never permitted to leave scope. As a result, memory is used and never freed.


Mikhail писал(а):А еще можно отладчик запустить и поправить ссылку

А можно просто не выдумывать терминологию.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Вышла новая версия компилятора FreePascal

Сообщение Mikhail » 27.12.2015 15:05:02

kazalex писал(а):Забор забору рознь. Вот, например, что написано на заборе майкрософт:

Это лишь частное мнение микрософт, не более. :mrgreen:
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вышла новая версия компилятора FreePascal

Сообщение kazalex » 27.12.2015 15:29:22

Mikhail писал(а):Это лишь частное мнение микрософт, не более

Я так и думал. Он, таки, явился. :pray:
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Вышла новая версия компилятора FreePascal

Сообщение perlpunk » 29.12.2015 11:01:51

както запилили замыкания в rust и swift
без GC

еще есть такое http://www.elementscompiler.com/element ... guage.aspx

вообще замыкания и вот
http://www.elementscompiler.com/element ... arallelism
такая фишка очень востребованна сейчас
особенно в GUI

а разработка компонентов как предлагается сейчас она странная - имеем класс с очень много полей и методов. расширение только черезз наследование -> городим кучу ненужной ииерархии.
хеллперы классов может както изменят ситуацию. будет декомпозиция и переиспользование отдельных частей в компоентах. тоесть возвращаемся к истокам где есть структура - объект и есть функкции привязанные к объекту (оберон, GOlang)
perlpunk
новенький
 
Сообщения: 90
Зарегистрирован: 26.09.2008 21:19:48

Re: Вышла новая версия компилятора FreePascal

Сообщение perlpunk » 17.11.2016 09:19:54

а во freepascal есть такое ?

http://newpascal.org/assets/modern_pasc ... d_routines

локальные переменные родительской функции доступны во вложенных функциях (т.е. без передачи из как аргументов).
почти как замыкания только статические.
perlpunk
новенький
 
Сообщения: 90
Зарегистрирован: 26.09.2008 21:19:48

Re: Вышла новая версия компилятора FreePascal

Сообщение Дож » 17.11.2016 09:32:51

Есть такое во всех уважающих себя паскалях.

В fpc даже можно объявить «is nested» тип для таких «статических замыканий»:
http://svn.freepascal.org/svn/fpc/trunk ... param3d.pp
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Вышла новая версия компилятора FreePascal

Сообщение perlpunk » 19.11.2016 10:59:36

честно говоря пример по ссылке не понял. там какие то типы дополнительные передаются и непонятный значек @

но вложенные функции попробую тогда.
perlpunk
новенький
 
Сообщения: 90
Зарегистрирован: 26.09.2008 21:19:48

Re: Вышла новая версия компилятора FreePascal

Сообщение Снег Север » 19.11.2016 13:17:09

perlpunk писал(а): непонятный значек @

Значок @ означает передачу адреса, существует в языке с незапамятных времен.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

Рейтинг@Mail.ru