Один довольно технологичный способ, который я мог бы обеспечить, чтобы не превышать максимальный порог памяти в вашем приложении, - это определить собственную специальную функцию malloc()
, которая хранит счет того, сколько памяти было выделено, и возвращает указатель NULL. если порог был превышен. Это, конечно, будет зависеть от того, что вы проверяете возвращаемое значение malloc()
каждый раз, когда вы его вызываете, что в любом случае считается хорошей практикой, поскольку нет гарантии, что malloc()
найдет непрерывный блок памяти того размера, который вы запрашивали. .
Это не было бы надежно, потому что, вероятно, не будет учитываться заполнение памяти для выравнивания слов, поэтому вы, вероятно, в конечном итоге достигнете предела памяти в 64 МБ задолго до того, как ваша функция сообщит, что достигла его.
Кроме того, если вы используете Win32, возможно, есть API, которые вы могли бы использовать, чтобы получить текущий размер процесса и проверить это в своей пользовательской функции malloc()
. Имейте в виду, что добавление этих проверочных накладных расходов в ваш код, скорее всего, заставит его использовать больше ресурсов ЦП и работать намного медленнее, чем обычно, что приятно приводит к следующему вопросу:)
А также я должен избегать использовать больше
Загрузка процессора.
Это очень общий вопрос, и на него нет простого ответа. Вы можете написать две разные программы, которые, по сути, делают одно и то же, и одна из них может быть в 100 раз больше загружать процессор, чем другая из-за используемых алгоритмов. Лучшая техника для:
- Установите некоторые показатели производительности.
- Напишите вашу программу.
- Измерьте, чтобы увидеть, достигает ли он ваших ориентиров.
- Если оно не достигает ваших ориентиров, оптимизируйте и перейдите к шагу (3).
Вы можете использовать программы профилирования, чтобы помочь вам понять, где ваши алгоритмы должны быть оптимизированы. Rational Quantify является примером коммерческого, но есть также много бесплатных профилировщиков.