Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Свободное общение _ Узнать объем оперативной памяти для программы по коду на АЯ

Автор: Sansei4 6.04.2011 22:58

Как на основании текста программы на алгоритмическом языке определить требуемый объем рабочей области оперативной памяти?

Автор: andriano 7.04.2011 1:06

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

Автор: Sansei4 7.04.2011 1:12

а переменные, длина строки тоже учитывается?

Автор: Archon 7.04.2011 1:34

Учитываются, но вообще-то говоря, всего этого недостаточно. Сама программа тоже занимает место в памяти. А еще есть стек. В общем случае, если не ошибаюсь, получается так: сама программа + стек + куча. Размер программы по исходному коду точно предсказать сложно, если этот код не на ассемблере.

Автор: Sansei4 7.04.2011 1:47

спасибо огромное за помощь

Автор: Lapp 7.04.2011 5:04

М
Название темы отредактировано (Правила Форума, п.4)



Цитата(Sansei4 @ 6.04.2011 19:58) *
Как на основании текста программы на алгоритмическом языке определить требуемый объем рабочей области оперативной памяти?

Ответ очень простой. Если не выполнять (и не моделировать выполнение), то это невозможно.

if a>0 then GetMem(b,10) else (b,100000);

Если тут неизвестнен знак a, то ничего сказать нельзя. А знак можно узнать только выполнением.