Баг в винде? (очередной)) / про память и выравнивание exe-файлов

Тема в разделе "WASM.WIN32", создана пользователем mrhx, 7 апр 2007.

  1. mrhx

    mrhx New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    63
    Когда создаю exe со стандартным выравниванием секций 4К, программа весом 20К в памяти (согласно менеджеру задач) весит 600К.
    Когда этот же код собираю с выравниванием 512, то программа, весящая 5К, резко начинает в памяти весить 3М.
    Что за фигня? =)

    И еще, может кто знает почему 20К превращаются в 600К в памяти?... Как уменьшить размер занимаемой памяти?... пробовал собирать прогу с уменьшенными параметрами стека - непомогает почемуто.
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Видимо, 600Кб - это сразу Windows даёт на программу - не важно какого (малого) размера EXE файл. Не похоже на баг.
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я думаю считается суммарный объем переданной памяти в виртульаном адресном пространстве, а это далеко не равно размеру образа программы
     
  4. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    mrhx
    Во вторых, выравнивание какое? Физическое или виртуальное?
    Если виртуальное - то это одна из причин.

    Во третих, сейчас программы не изолированны, - в их АП подгружаются дополнительные модули аутпост и касперского, и еще много чего. Хотя на сам размер ехе-образа влиять не должно. Но вот на суммарный - запросто.
    Кстати, выводится как раз суммарный объем, вместе с кернелом и прочими либами.
     
  5. mrhx

    mrhx New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    63
    nitrotoluol
    ааа.... ну если суммарный объем показывается тогда понятно почему больше.
    а выравнивание файловое:

    Count of sections 4 │ Machine intel386
    Symbol table 00000000[00000000] │ TimeStamp 4616A963
    Size of optional header 00E0 │ Magic optional header 010B
    Linker version 6.00 │ OS version 4.00
    Image version 0.00 │ Subsystem version 4.00
    Entry point 000012E0 │ Size of code 00000800
    Size of init data 00001800 │ Size of uninit data 00000000
    Size of image 00005000 │ Size of headers 00000800
    Base of code 00001000 │ Base of data 00002000
    Image base 00400000 │ Subsystem Windows GUI
    Section alignment 00001000 │ File alignment 00000800 <<<<<
    Stack 00100000/00001000 │ Heap 00100000/00001000
    Checksum 00000000 │ Number of directories 16
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    nitrotoluol
    Это что за выходки? Форум не место для балагана! Первое и последнее предупреждение за нарушение правил.

    mrhx
    Посмотри SetProcessWorkingSetSize(Ex)
     
  7. mrhx

    mrhx New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    63
    IceStudent
    Спасибо, посмотрю.