Dmitri |
Отправлено: 08.01.2004, 10:18 |
|
admin@localhost
Группа: Модератор
Сообщений: 110
|
Добрый день! Подскажите, пожалуйста, почему моя программа постепенно (чем больше я вызываю главную расчетную функцию, тем быстрее) забивает оперативную память все больше и больше (от 4 Mb до 30 Mb)?
Суть расчетной функции такова: выделяется память под более 100 динамических массивов с 3000 элементами в каждом
CODE |
float* a1 = new float[3000];
// ...
float* a120 = new float[3000];
|
В конце функции я все эти массивы удаляю
CODE |
delete [] a1;
// ...
delete [] a120;
|
Но, помимо этого, в функции каждый раз при ее запуске я объявляю более 500 переменных типа float и double. Не происходит ли при этом переполнение стека или что-нибудь подобное?
Вообще, где можно почитать про выделение памяти, стек и т. д.?
И что делать в моей ситуации, чтобы не "забивать" память настолько, а переменные-то нужны, и все 500?
|
|
** pasha |
Отправлено: 08.01.2004, 13:43 |
|
Не зарегистрирован
|
Может не всё созданное по new удаляете ?
Или эта расчетная функция вызывает другие функции,
которые где-то не освобождают память.
Или память забивает не эта расчетная функция,
а сама программа, ведь между вызовами расчетной
функции что-то происходит и в вызывающей программе,
возможно память отнимается там.
|
|
Dmitri |
Отправлено: 08.01.2004, 17:42 |
|
admin@localhost
Группа: Модератор
Сообщений: 110
|
Нет, дело не в этом. Всем, кто хочет помочь (ОЧЕНЬ прошу), читайте мои объяснения здесь: http://forum.codenet.ru/showthread.php?s=&...52326#post52326
|
|
fellow |
Отправлено: 08.01.2004, 18:30 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 33
|
Коллега Dmitri, смотрите мой ответ там же. |
|