Хотелось бы зарегистрировать и, возможно, предупредить пользователя о том, что в программе должно быть не хватает памяти, что позволяет им попытаться освободить некоторых (надеюсь). Хотя я могу предопределить необходимые объекты GUI, необходимые для отображения ситуации, я обеспокоен тем, что в этой ситуации могут быть невозможны более основные операции с использованием cstdio
, такие как открытие или запись в файл.Запись ошибки «Без памяти» в файл, без памяти?
Мой вопрос:, если программа больше не может динамически выделять память вообще, возможно ли использовать cstdio
? Существуют ли какие-либо специальные меры, которые мне потребуются, например, если файл предварительно открыт или не использовать буфер? Будут ли функции cstring
функционировать? Любые другие возможные препятствия, чтобы знать об этом типе сценария?
(Предупреждение пользователю роскошь в этом случае основная цель состоит в том, чтобы зарегистрировать ошибку в файл, а затем попытаться спасти соответствующие данные с cstdio, то предупредить пользователя, в таком порядке)
Когда вы получите эту ошибку, может быть слишком поздно, но у вас есть такая же ошибка, даже если вы не можете выделить достаточно ** непрерывное пространство **, так что другие операции могут работать, даже если один запрос распределения не смогли. Я предлагаю предупреждать пользователя (и записывать журнал), когда свободная память идет ** ниже порога ** (как часто эта проверка должна выполняться, зависит от вашего шаблона распределения). –
Прямо сейчас, память не объединена заранее, ее просто хватают из ОС по мере необходимости. (Необходимо будет скоро это изменить). Способ распределения памяти, тем не менее, повторит попытку распределения после регистрации/предупреждения. Если после этого программа не попытается выделить больше памяти (и вызывает сбой), или сценарий не изменится, следует восстановить (надеюсь!) –
Одним из способов, с помощью которого мы попытались решить эту проблему в некоторых из игр, над которыми я работал, было выделение буфера при регистрации нашего обработчика исключений, а затем, если бы произошло исключение, мы освободили бы буфер и, надеюсь, имели бы достаточно памяти, чтобы позволить обработчику выписывать необходимые ему данные. –