Ошибка недостаточно памяти для обработки команды warcraft 3

Ребята :) Который год не будет идти — это не решит данную проблему.
Данная проблема возникает только в картах, которые имеют ошибку в коде.
Это не игра сломана, а карта, в которую вы пытаетесь сыграть вылетает ошибкой.

Здесь в Фатальной ошибке написано:
Что нехватает памяти в игровом процессе для обработки объекта, который находится в карте. Видимо там слишком много переменных и триггеров, которые это задействует. По этой причине карта вылетает.

Рекомендую просто сменить карту и все :)
Я просто сам пишу код в картах своих и это проблема связанно с нарушением логики кода.

  • #1

Здравствуйте, вылетает вот такая ошибка «Не достаточно ресурсов памяти для обработки этой команды» целый день, хотя раньше таких проблем у меня не было. Оперативы более чем достаточно 32гб. Вот скрин. Пробовал отключать все аддоны, не помогло.

IMG_20230304_225830.jpg

Enerlight-x5


  • #2

Здравствуйте.
Выполните, пожалуйста, следующие действия:
Снимите галочку «Только чтение» с папки «World of Warcraft Sirus» и ко всем вложенным файлам.
Добавьте папку с игрой в исключения антивируса.
Закройте торрент в системном трее, около часов.
Удалите Run.exe, папки Cache и Logs, а также файл Config.wtf, что лежит в папке WTF.
Запустите лаунчер и повторно проложите путь к папке с игрой, после чего нажмите «Проверить клиент».

  • #3

Не помогло, вышла уже другая ошибка.

IMG_20230304_234409.jpg

Enerlight-x5


  • #4

Закройте игру и переместите клиент игры в корень диска C:.
Снимите галочку «Только чтение» с папки «World of Warcraft Sirus» и ко всем вложенным файлам.
Удалите Run.exe, папки Cache и Logs.
Переименуйте папку Interface в Interface1, папку WTF в WTF1. Тем самым позволив игре создать профиль настроек «По умолчанию».
Добавьте новое расположение папки с игрой в исключения антивируса.
Запустите лаунчер и проложите корректный путь к папке с игрой, после чего нажмите кнопку «Проверить клиент».
После проверки клиента войдите в игру и проверьте актуальность проблемы.

  • #5

Опять не помогло. Вот скрин.

IMG_20230304_235840.jpg

Enerlight-x5


  • #6

Укажите спецификации Вашего компьютера, а также разрядность операционной системы.

  • #7

Вот. 1677963850180.png

А Видеокарту забыл, 1060 3гб

Enerlight-x5


  • #8

Проверьте, не отключен ли у Вас файл подкачки.

  • #9

А можете подсказать где это смотреть?

Enerlight-x5


  • #10

Подробно в данной статье —

vgtimes.ru

Как увеличить файл подкачки в Windows 7, Windows 10 и Windows 11

Увеличение размера файла подкачки является одним из самых простых способов улучшения производительности компьютера. Выполнение этого действия особенно полезно на слабых персональных устройствах. В этом руководстве мы расскажем о том, как увеличить размер файла подкачки в операционных системах…

vgtimes.ru


vgtimes.ru

  • #11

Не отключён, но я сделал больше подкачку, зашёл в игру и опять ошибка. Ошибка та же, что и на последних двух скринах

Enerlight-x5


  • #12

Давайте скачаем новый клиент игры, оставив текущий в качестве резервного.
Укажите в настройках лаунчера новый путь к папке с игрой, после чего нажмите «Скачать клшиент».
После успешной загрузки снимите галочку «Только чтение» с папки «World of Warcraft Sirus» и ко всем вложенным файлам.
Добавьте новое расположение папки с игрой в исключения антивируса.
Перезагрузите компьютер.
Не устанавливая аддоны войдите в игру и проверьте актуальность проблемы.

  • #13

Хорошо

Скачал,сделал как и сказали. Вот.

IMG_20230305_015909.jpg

Bloor

Bloor

Служба поддержки пользователей


  • #14

Скачал,сделал как и сказали. Вот.

IMG_20230305_015909.jpg

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

  • #15

Всё сделал, но иногда всё равно зависает и выдаёт ошибку

Ezaro

Ezaro

Служба поддержки пользователей


  • #16

Здравствуйте. В каких моментах возникает эта ошибка, также в Даларане?

  • #17

Здравствуйте, да, и после загрузки почему-то минуты 2-3 идёт прогрузка мира. Хотя аддоны я ещё не качал

Ezaro

Ezaro

Служба поддержки пользователей


  • #18

Попробуйте снизить настройки графики, вплоть до снижения разрешения игры. Скорость загрузки мира зависит от скорости интернет соединения.

Popmi-x5


  • #20

Здравствуйте.
Проблема еще актуальна?

Содержание

  1. Тема: Недостаточно памяти для обработки команды.
  2. Недостаточно памяти для обработки команды.
  3. Тема: Недостаточно памяти для обработки команды.
  4. Недостаточно памяти для обработки команды.
  5. Вылетает клиент (недостаточно памяти для обработки команды)
  6. Прикрепленные изображения

Тема: Недостаточно памяти для обработки команды.

Опции темы
Отображение

Недостаточно памяти для обработки команды.

И выдает такой краш в игре :

This application has encountered a critical error:

Недостаточно памяти для обработки команды.

Requested 4793872 bytes of memory

WoWBuild: 12340
Realm: WoW Circle 3.3.5a x5 [91.235.137.40:82263]
Local Zone: Даларан, Даларан
Local Player: Epiphanye, 000000000000A5D1, (5742.06,636.874,647.922)
Total lua memory: 28862KB
Current Addon: (null)
Current Addon function: UNKNOWN
Current Addon object: (null)
Add Ons: AtlasLoot AtlasLoot_WrathoftheLichKing AtlasLootFu BadBoy Bartender4 BaudBag ChatBar Cooldowns DrDamage Grid GridAutoFrameSize InspectEquip MoveAnything PallyPower Recount TidyPlates TidyPlates_Grey TidyPlates_Neon DBM-Core Quartz
Settings:
SET locale «ruRU»
SET realmList «logon.circle-servers.com»
SET hwDetect «0»
SET gxResolution «1920×1080»
SET gxRefresh «60»
SET gxMultisample «8»
SET gxMultisampleQuality «0.000000»
SET gxFixLag «0»
SET videoOptionsVersion «3»
SET textureFilteringMode «5»
SET movie «0»
SET mouseSpeed «1»
SET Gamma «1.000000»
SET readTOS «1»
SET readEULA «1»
SET readTerminationWithoutNotice «1»
SET showToolsUI «1»
SET accounttype «LK»
SET Sound_OutputDriverName «System Default»
SET Sound_MusicVolume «0»
SET Sound_AmbienceVolume «0.5»
SET componentTextureLevel «9»
SET shadowLevel «0»
SET farclip «1277»
SET specular «1»
SET groundEffectDensity «64»
SET groundEffectDist «140»
SET environmentDetail «1.5»
SET extShadowQuality «5»
SET projectedTextures «1»
SET weatherDensity «3»
SET realmName «WoW Circle 3.3.5a x5»
SET gameTip «37»
SET checkAddonVersion «0»
SET Sound_MasterVolume «0.10000000149012»
SET Sound_SFXVolume «1»

Adapter 0 (primary):
Driver: nvldumd.dll
Version: 23.21.0013.8813
Description: NVIDIA GeForce GTX 1080 Ti
DeviceName: .DISPLAY1

Adapter 1:
Driver: nvldumd.dll
Version: 23.21.0013.8813
Description: NVIDIA GeForce GTX 1080 Ti
DeviceName: .DISPLAY2

Address Frame Logical addr Module

Showing 40/40 threads.

**** Couldn’t initialize Debug Help library, error: 8

DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE

Stack: 1024 bytes starting at (ESP = 05B6F804)

Стандартное попробуйте, снести папки cache/wtf/interface, и попробовать поиграть на пустом клиенте.
В клиенте 3.3.5 есть какие-то патчи на текстуры например?

Источник

Тема: Недостаточно памяти для обработки команды.

Опции темы
Отображение

Недостаточно памяти для обработки команды.

И выдает такой краш в игре :

This application has encountered a critical error:

Недостаточно памяти для обработки команды.

Requested 4793872 bytes of memory

WoWBuild: 12340
Realm: WoW Circle 3.3.5a x5 [91.235.137.40:82263]
Local Zone: Даларан, Даларан
Local Player: Epiphanye, 000000000000A5D1, (5742.06,636.874,647.922)
Total lua memory: 28862KB
Current Addon: (null)
Current Addon function: UNKNOWN
Current Addon object: (null)
Add Ons: AtlasLoot AtlasLoot_WrathoftheLichKing AtlasLootFu BadBoy Bartender4 BaudBag ChatBar Cooldowns DrDamage Grid GridAutoFrameSize InspectEquip MoveAnything PallyPower Recount TidyPlates TidyPlates_Grey TidyPlates_Neon DBM-Core Quartz
Settings:
SET locale «ruRU»
SET realmList «logon.circle-servers.com»
SET hwDetect «0»
SET gxResolution «1920×1080»
SET gxRefresh «60»
SET gxMultisample «8»
SET gxMultisampleQuality «0.000000»
SET gxFixLag «0»
SET videoOptionsVersion «3»
SET textureFilteringMode «5»
SET movie «0»
SET mouseSpeed «1»
SET Gamma «1.000000»
SET readTOS «1»
SET readEULA «1»
SET readTerminationWithoutNotice «1»
SET showToolsUI «1»
SET accounttype «LK»
SET Sound_OutputDriverName «System Default»
SET Sound_MusicVolume «0»
SET Sound_AmbienceVolume «0.5»
SET componentTextureLevel «9»
SET shadowLevel «0»
SET farclip «1277»
SET specular «1»
SET groundEffectDensity «64»
SET groundEffectDist «140»
SET environmentDetail «1.5»
SET extShadowQuality «5»
SET projectedTextures «1»
SET weatherDensity «3»
SET realmName «WoW Circle 3.3.5a x5»
SET gameTip «37»
SET checkAddonVersion «0»
SET Sound_MasterVolume «0.10000000149012»
SET Sound_SFXVolume «1»

Adapter 0 (primary):
Driver: nvldumd.dll
Version: 23.21.0013.8813
Description: NVIDIA GeForce GTX 1080 Ti
DeviceName: .DISPLAY1

Adapter 1:
Driver: nvldumd.dll
Version: 23.21.0013.8813
Description: NVIDIA GeForce GTX 1080 Ti
DeviceName: .DISPLAY2

Address Frame Logical addr Module

Showing 40/40 threads.

**** Couldn’t initialize Debug Help library, error: 8

DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE
DBG-MODULE

Stack: 1024 bytes starting at (ESP = 05B6F804)

Стандартное попробуйте, снести папки cache/wtf/interface, и попробовать поиграть на пустом клиенте.
В клиенте 3.3.5 есть какие-то патчи на текстуры например?

Источник

Вылетает клиент (недостаточно памяти для обработки команды)

photo 482296

Вылетает ошибка: «недостаточно памяти для обработки команды». Игра вылетает минут через 5-10, без разницы в какой локации нахожусь, но в инстах не вылетает. Спрашивал у ясеня gogle, не нашёл решения.На компе 4 гб озу, в варкрафт играю около 7 лет, никогда не было таких ошибок. Другие игры, такие как wot не вылетают.

А ответ в теме был. Даже оба.

Если приложение постоянно просит выделение дополнительной памяти, то вариантов только два:

Соответственно, и вариантов действий два:

Ну, а вот если ничего из вышеперечисленного не помогло, то уже начинаем танцевать с бубном:

P.S.: а вообще, всё сказано (но не показано) у ТСа на скриншоте.

Вылетает ошибка: «недостаточно памяти для обработки команды». Игра вылетает минут через 5-10, без разницы в какой локации нахожусь, но в инстах не вылетает. Спрашивал у ясеня gogle, не нашёл решения.На компе 4 гб озу, в варкрафт играю около 7 лет, никогда не было таких ошибок. Другие игры, такие как wot не вылетают.

Прикрепленные изображения

Попробуйте расширить виртуальную память на системном диске

64699ac71f662fb55efb20393660ce48

ecf0952d59a7146d52049c05c089c79f

a9ae3a1fbab9336b61afe344f5765c29

Попробуйте расширить виртуальную память на системном диске

пробывал, улучшило минут на 5, но всё равно со временем вируалку забивает и клиент вылетает.

Попробуй файл подкачки 8 гб сделать

Попробуй файл подкачки 8 гб сделать

как вычитал на одном из форумов: Обычная утечка памяти.. ничего неожиданного. Было на Havok, было на всех версиях Cry Engine.

P.S. c размером файла подкачки эксперементировал в доль и поперёк, помогало только увеличением времени вылета от 5 до 20 минут, но проблему не решало.

P.S.S последний раз на изе играл в мае, проблем таких не возникало, систему не менял, озу не докидывал, всё родное как было так и ничего не менялось

как вычитал на одном из форумов: Обычная утечка памяти.. ничего неожиданного. Было на Havok, было на всех версиях Cry Engine.

P.S. c размером файла подкачки эксперементировал в доль и поперёк, помогало только увеличением времени вылета от 5 до 20 минут, но проблему не решало.

P.S.S последний раз на изе играл в мае, проблем таких не возникало, систему не менял, озу не докидывал, всё родное как было так и ничего не менялось

просто из интереса, попробуй отрубить все аддоны

просто из интереса, попробуй отрубить все аддоны

при чём тут аддоны? с этой сборкой аддонов я играю давно, не обновлял не добавлял/не убовлял

при чём тут аддоны? с этой сборкой аддонов я играю давно, не обновлял не добавлял/не убовлял

Скорее всего у тебя просто вирус.

Скорее всего у тебя просто вирус.

да ты кэп, вирус нацеленый на wow?

Это, скорее всего, накрывается диск С. Перенеси игру на D и посмотри что будет.

У меня щас тоже часто вылетает, в основном когда лечу из даларана почти 100% краш. Началось вроде после установки win10.

Это, скорее всего, накрывается диск С. Перенеси игру на D и посмотри что будет.

а что так можно было? ты гений.

У меня щас тоже часто вылетает, в основном когда лечу из даларана почти 100% краш. Началось вроде после установки win10.

ну это просто win10, она посути сырая. У меня win7 отключён gogle chrome, и только вовка и вылетает, когда же играю в wot, а он я думаю поджирает не меньше чем вовка, в паралель ещё и по скайпу разговариваю, и в хроме музон играет и всё шито крыто, а тут проказа вылезла. Вот ток почему в цлк 25хм на личе где всё сверкает ни чего не вылетает, вот это странно

а что так можно было? ты гений.

к твоему сведению если один винчестер то без разницы c,d,e,f и тд до бесконечности сколько локальных дисков, винч то один и если накрвывается первый, то остальные не спасут, но нет у меня не накрывается винч.

P.S. проверил всё, винч, вирусы, озу, вирт память добавлял/убавлял, аддоны отключал и тд и тп, варианты просто кончились, в чём может быть проблема

Это, скорее всего, накрывается диск С. Перенеси игру на D и посмотри что будет.

у него как бы стоит на Е диске.

ТС, прогони чекдиском, может он банально натыкается на бэд сектор. У меня такое же окно вылетает при попытке начать запись, если программу открыть позже, чем саму игру. пишет то же самое. похоже, что одна ошибка на все случаи жизни.

к твоему сведению если один винчестер то без разницы c,d,e,f и тд до бесконечности сколько локальных дисков, винч то один и если накрвывается первый, то остальные не спасут, но нет у меня не накрывается винч.

P.S. проверил всё, винч, вирусы, озу, вирт память добавлял/убавлял, аддоны отключал и тд и тп, варианты просто кончились, в чём может быть проблема

Винчестер имеет разделы и кластеры, тут ты немного не прав.

у него как бы стоит на Е диске.

ТС, прогони чекдиском, может он банально натыкается на бэд сектор. У меня такое же окно вылетает при попытке начать запись, если программу открыть позже, чем саму игру. пишет то же самое. похоже, что одна ошибка на все случаи жизни.

Винчестер имеет разделы и кластеры, тут ты немного не прав.

я в курсе, просто не правильно выразился. Попробую прогнать, результат напишу

я в курсе, просто не правильно выразился. Попробую прогнать, результат напишу

прогоняй лучше на не запущенной системе, если умеешь. под PE например..

после прогона перемести вов на другой локальный диск и обратно.

Вылетает ошибка: «недостаточно памяти для обработки команды». Игра вылетает минут через 5-10, без разницы в какой локации нахожусь, но в инстах не вылетает. Спрашивал у ясеня gogle, не нашёл решения.На компе 4 гб озу, в варкрафт играю около 7 лет, никогда не было таких ошибок. Другие игры, такие как wot не вылетают.

А ответ в теме был. Даже оба.

Если приложение постоянно просит выделение дополнительной памяти, то вариантов только два:

Соответственно, и вариантов действий два:

Ну, а вот если ничего из вышеперечисленного не помогло, то уже начинаем танцевать с бубном:

P.S.: а вообще, всё сказано (но не показано) у ТСа на скриншоте.

Источник

Когда у игры неполучается выделить память, она показывает сообщение об ошибке «Недостаточно памяти для обработки команды».

Произойти это может, если память доступная процессу игры кончилась.
Даже если у вас 64-битный процессор и десятки гигабайт оперативной памяти, игра 32-битная и не может использовать больше 4-ех гигабайт памяти.
А на практике, даже больше 2-ух гигабайт будет проблемно занять, из-за особености устройства используемых варкрафтом связных списков.

В конце отчета об ошибке, создаваемого игрой при краше от нехватки памяти, можно увидеть таблицу регионов памяти.

Пример таблицы

   12  2784 e:Drive1tempbuildwar3xWar3SourceUI/CCommandButton.cpp(546)
    1   528 .FrameDef.cpp(69)
   12   768 e:drive1tempbuildwar3xwar3sourcegameCFogMaskTable.h(98)
    1    56 .CGameUI.cpp(517)
    1   512 e:Drive1tempbuildwar3xWar3SourceWorldEdit/WEUtilities.cpp(3422)
  286 12308 .W32OsISndCache.cpp(991)
  143  4004 .?AUNATIVETOKEN@@(-2)
...

Первая колонка содержит количество выделенных блоков памяти, а вторая их сумарный размер.
Дальше идет либо имя исходного файла и номер строки, либо закодированое имя типа и отрицательное число.

По моим наблюдениям, выделение памяти может также провалиться в случае, когда размер одного региона менеджера памяти достигает лимита, равного примерно 256-ми мегабайтам.
Так что, даже если память еще не закончилась, но блоков памяти в одном регионе выделено слишком много, то игра всё равно может крашнуться. Также, могу предположить, что если игра попытается одним куском выделить много памяти (например, 300 МБ), то последствия будут теми же.

По сигнатуре региона можно попытаться догадаться о причине произошедшего.
Например, если имя объекта CUnitListNode, то можно заподозрить утечки памяти, связанные с неудаляемыми групами в скрипте карты.

Для более удобного просмотра таблицы, предлагаю воспользоваться моим скриптом на питоне, который сортирует элементы таблицы и конвертирует их в более читаемый вид.
Установите python последнией версии (3.x), но может быть и на старых заработает.

wc3memsort.py

import sys
import re
from contextlib import nullcontext
from collections import namedtuple

def open_input(path):
	return open(path, 'rt') if path != '-' else nullcontext(sys.stdin)

def open_output(path):
	return open(path, 'wt') if path != '-' else nullcontext(sys.stdout)

input_path = sys.argv[1]
output_path = sys.argv[2]

with open_input(input_path) as f:
	input_data = f.readlines()

pattern = re.compile(r' *([0-9]+) +([0-9]+) +(.*)((-?[0-9]+))')

MemoryRegion = namedtuple('MemoryRegion', ['blocks_count', 'size', 'source_file', 'source_line'])

def parse_line(line):
	m = pattern.match(line)
	if m:
		return MemoryRegion(
			blocks_count = int(m.group(1)),
			size = int(m.group(2)),
			source_file = m.group(3),
			source_line = int(m.group(4)),
		)

def parse_lines(lines):
	for i, line in enumerate(lines):
		parsed_line = parse_line(line)
		if parsed_line:
			yield parsed_line
		else:
			raise Exception(f'Failed to convert line number {i+1}.')
			
memory_regions = list(parse_lines(input_data))
total_size = sum(r.size for r in memory_regions)
sorted_memory_regions = sorted(memory_regions, reverse=True, key=lambda r: r.size)
formatted_memory_regions = (format_memory_region(r) for r in sorted_memory_regions)

def format_size(size):
	suffixes = ['bytes', 'KiB', 'MiB', 'GiB', 'TiB']

	i = 0
	while size >= 1024:
		size /= 1024
		i += 1

	if i >= len(suffixes):
		i = len(suffixes) - 1

	if i > 0:
		return f'{size:.2f} {suffixes[i]}'
	else:
		return f'{size} {suffixes[i]}'

def format_memory_region(r):
	pretty_size = format_size(r.size)
	return f'{pretty_size}t{r.blocks_count}t{r.source_file}t{r.source_line}'

with open_output(output_path) as f:
	f.write(f'total size: {format_size(total_size)}.n')
	f.write('n'.join(formatted_memory_regions))
	f.write('n')

Применение:

python wc3memsort.py <путь к файлу с исходной таблицей> <путь к файлу для записи результата>

Вместо пути может быть указан минус «-«, в таком случае для чтения или записи будет использоваться стандартный ввод/вывод.

На вход скрипт принимает не весь отчет об ошибке, а лишь фрагмент с таблицей находящийся в конце файла между разделяющими полосами.

На выходе пишется сначала сумарное количество памяти, занимаемое всеми регионами памяти, а затем таблица регионов, в которой первая колонка содержит размер региона памяти, а вторая количество блоков памяти. Дальше, как и в оригинале, идет сигнатура региона.

Пример результата:

total size: 670.44 MiB.
145.41 MiB	1584	.?AVCAgentBaseAbs@@	-2
62.51 MiB	95047	.cmemblock.cpp	372
59.05 MiB	40199	.?AVC3Vector@NTempest@@	-2
51.49 MiB	1468	.?AUCustomObjectField@@	-2
51.28 MiB	729588	.CDataAllocator.cpp	152
...

Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.

Понравилась статья? Поделить с друзьями:
  • Ошибка недостаточно памяти в сканере
  • Ошибка недостаточно памяти в coreldraw
  • Ошибка недостаточно памяти 1с при обмене
  • Ошибка невозможно подключится к серверы в battlefield
  • Ошибка недостаточно места на устройстве