Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
Да. И еще в случае с dll-ками 17.01.05 12:21 Число просмотров: 4932
Автор: amirul <Serge> Статус: The Elderman
|
Описанный метод позволит разным процессам разделять память под ней, внешние же упаковщики за счет CoW будут отжирать память в каждом процессе, который использует эту длл-ку.
|
<site updates>
|
При компиляции программы, фактически состоящей лишь из одного вызова функции MessageBox, получается исполняемый файл размером 30 Кб. Как уменьшить его размер? 25.12.03 14:27
Publisher: dl <Dmitry Leonov>
|
При компиляции программы, фактически состоящей лишь из одного вызова функции MessageBox, получается исполняемый файл размером 30 Кб. Как уменьшить его размер? :-) http://www.bugtraq.ru/cgi-bin/iforum.mcgi?type=si&u=94
Такой размер файл имеет потому, что в него включается код стандартной библиотеки времени выполнения языка C/С++ (Standard C/С++ Run-Time Library, далее – RTL).
Если стандартная библиотека C/C++ Вам не нужна, и Вы целиком напишите программу на Windows API, то можно отключить RTL. Для этого на вкладке Link в окне Project Settings (для компилятора Visual C++) необходимо:
Включить опцию Ignore all default libraries (можно также использовать ключ /NOD или /NODEFAULTLIB в командной строке линкера).
После этого в программе нельзя будет пользоваться функциями библиотеки C/C++ (printf, strcpy, malloc и т.д.), а следует использовать только Windows API.
Указать линкеру главную функцию программы в поле Entry Point Symbol (или использовать ключ линкера /ENTRY)
Заметим, что, в отличие от привычных...
Полный текст
|
|
Выходить по ExitProcess? 13.01.06 08:44
Автор: Zart Статус: Незарегистрированный пользователь
|
Я видел подобный совет в другом месте, только там ещё говорили выходить из программы по ExitProcess. Я не знаю точно почему, но на всякий случай...
Кто тут крутой системщик, что происходит, когда исполняется return(1) ?
|
| |
Нет не надо 13.01.06 12:48
Автор: amirul <Serge> Статус: The Elderman
|
> Я видел подобный совет в другом месте, только там ещё > говорили выходить из программы по ExitProcess. Я не знаю > точно почему, но на всякий случай...
Не надо.
> Кто тут крутой системщик, что происходит, когда исполняется > return(1) ?
Ничего страшного не происходит. Программа возвращается в kernel32!BaseProcessStart, и там вызывается ExitThread
После завершения последнего потока вызывается ExitProcess
ЗЫ: Да, кстати, на всякий случай напомню, что есть еще два FAQ-а, посвященных уменьшению размера:
http://bugtraq.ru/forum/faq/programming/small2.html
http://bugtraq.ru/forum/faq/programming/small3.html
|
|
Воспользуйся ASPack'om 16.01.05 18:23
Автор: Криворукий ламер Статус: Незарегистрированный пользователь
|
> При компиляции программы, фактически состоящей лишь из > одного вызова функции MessageBox, получается исполняемый > файл размером 30 Кб. Как уменьшить его размер? > :-) http://www.bugtraq.ru/cgi-bin/iforum.mcgi?type=si&u=94 > > > Такой размер файл имеет потому, что в него включается код > стандартной библиотеки времени выполнения языка C/С++ > (Standard C/С++ Run-Time Library, далее – RTL).
> Если стандартная библиотека C/C++ Вам не нужна, и Вы > целиком напишите программу на Windows API, то можно > отключить RTL. Для этого на вкладке Link в окне Project > Settings (для компилятора Visual C++) необходимо:
> Включить опцию Ignore all default libraries (можно также > использовать ключ /NOD или /NODEFAULTLIB в командной строке > линкера).
> После этого в программе нельзя будет пользоваться функциями > библиотеки C/C++ (printf, strcpy, malloc и т.д.), а следует > использовать только Windows API. Указать линкеру главную
> функцию программы в поле Entry Point Symbol (или > использовать ключ линкера /ENTRY) Заметим, что, в отличие
> от привычных... Воспользуйся ASPack'ом
|
| |
ASPack отстой 16.01.05 19:05
Автор: Killer{R} <Dmitry> Статус: Elderman
|
Он увеличивает размер проги в памяти и зачастую увеличивает время запуска проги. Предлагаемый же способ уменьшает все - и размер на диске (что в принципе фигня) и размер в памяти (за счет исключения выделения памяти под нужды RTL) и скорость загрузки (за счет исключения инициализации RTL). Юзать это конечно надо только тогда когда это имеет смысл. В моей практике такое бывало не раз.
Да и вообще ASPack не по нашему). Честно говоря не очень понимаю какой с него толк кроме легкой защиты от взлома. А размер инсталляционного пакета проги с ехешником запакованным аспаком больше чем размер того же пакета, но с простым ехешником (это в случае нормальной инсталляшки которая сама умеет хорошо жать, самопальные склеивалки всего в один файл не в счет) .
|
| | |
Да. И еще в случае с dll-ками 17.01.05 12:21
Автор: amirul <Serge> Статус: The Elderman
|
Описанный метод позволит разным процессам разделять память под ней, внешние же упаковщики за счет CoW будут отжирать память в каждом процессе, который использует эту длл-ку.
|
|
|