Технология разработки программного обеспечения

12 ЭФФЕКТИВНОСТЬ И ОПТИМИЗАЦИЯ ПРОГРАММ
12.2 Способы экономии памяти

Принятие мер по экономии памяти предполагает, что в каких-то случаях эта память неэкономно использовалась. Учитывая, что анализировать имеет смысл только операции размещения данных, существенно влияющие на характеристику эффективности, следует обращать особое внимание на выделение памяти под данные структурных типов (массивов, записей, объектов и т. п.).

Прежде всего при наличии ограничений на использование памяти сле¬дует выбирать алгоритмы обработки, не требующие дублирования исходных данных структурных типов в процессе обработки. Примером могут служить алгоритмы сортировки массивов, выполняющие операцию в заданном массиве, например, хорошо известная сортировка методом «пузырька». Если в программе необходимы большие массивы, используемые ограни¬ченное время, то их можно размещать в динамической памяти и удалять при завершении обработки.

Также следует помнить, что при передаче структурных данных в под-программу «по значению» копии этих данных размещаются в стеке. Из¬бежать копирования иногда удается, если передавать данные «по ссылке», но как неизменяемые (описанные const).

В последнем случае в стеке размещается только адрес данных, например:

Type Massiv=array[1..100] of real; function Summa(Const a:Massiv; ...)...