Зайди на http://www.uinc.ru/articles/ Там есть моя статейка про написания программ без RTL.
Т.е. в твоем случае это будет очень выгодно. Лишних кил 26-28 уберешь.
Минимально прога может занимать до 1К
В Visual C++ 6.0 написал программу, в которой трижды используется написанная мной функция. В режиме отладки (т.е. без оптимизации) вызовы этой функции проходят корректно во всех трех местах. С оптимизацией два вызова этой функции срабатывают, а третий вызов возвращает всякий мусор. В чем ошибка? Что делать? Не использовать оптимизацию? (в моем случае это не критично,т.к оптимизированная нерабочая версия занимает 36 Кб, а рабочая неоптимизированная - 40 Кб)
Код посмотреть можно ?15.03.02 15:48 Автор: PS <PS> Статус: Elderman
Самой ф-ии и ее вызовов. Очень часто в дебагере не прявляются ошибки связанные с памятью. В релизе проги падают на счет раз. Может и не при чем оптимизация.
[Win32] Код посмотреть можно ? Можно!15.03.02 22:45 Автор: Developer Статус: Незарегистрированный пользователь
есть функция:
char* Split (char* source,int iNum)
{
char string[MAX_PATH]
............ операции с этой переменной
return string;
}
Другая функция:
void resolve()
{
char tmp[MAX_PATH];
memset(tmp,0,sizeof(tmp));
strcat(tmp,Split(Program_Path,1)); (здесь в "оптимизированной" версии возвращается всякий мусор)
}
в чем дело?
[Win32] Код посмотреть можно ? Можно!15.03.02 23:14 Автор: + <Mikhail> Статус: Elderman
string zadeclarirovana kak local peremennaia v etoi Split function, a ty vozvrachaesh pointer na etu peremennuu, estestvenno etot pointer invalid kak tolko function exits.
> ............ операции с этой переменной > return string; > } > Другая функция: > void resolve() > { > char tmp[MAX_PATH]; > memset(tmp,0,sizeof(tmp)); > strcat(tmp,Split(Program_Path,1)); (здесь в > "оптимизированной" версии возвращается всякий мусор) > } > > в чем дело?
[Win32] Код посмотреть можно ? Можно!15.03.02 23:36 Автор: Developer Статус: Незарегистрированный пользователь
Зайди на http://www.uinc.ru/articles/ Там есть моя статейка про написания программ без RTL.
Т.е. в твоем случае это будет очень выгодно. Лишних кил 26-28 уберешь.
Минимально прога может занимать до 1К
> Зайди на http://www.uinc.ru/articles/ > Там есть моя статейка про написания программ без RTL. > Т.е. в твоем случае это будет очень выгодно. Лишних кил > 26-28 уберешь. > Минимально прога может занимать до 1К
Ню-ню.
А причем тут C++??? Попробуй-ка написать ченить с использованием классов - тебе придется реализовывать свой оператор new + менеджер памяти! А нафига такие извраты? Имхо, если rtl линковать динамически, выигрыш в размере будет не меньшим, при сохранении всей функциональности.
[Win32] это только поначалу непривычно15.03.02 15:47 Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
На самом деле,
делаешь оптимизацию как говарил KMiNT21
и линкуешь с msvcrt.lib
Юзаешь спокойно malloc, free и всё остальное,
и размер реально супер маленький
[Win32] это только поначалу непривычно17.03.02 22:55 Автор: Biasha <Бяша> Статус: Member
> На самом деле, > делаешь оптимизацию как говарил KMiNT21 > и линкуешь с msvcrt.lib > Юзаешь спокойно malloc, free и всё остальное, > и размер реально супер маленький Чем его оптимизация лучше импортов из msvcrt.dll? (плюс убивание выравнивания)
[Win32] не стоит все в одну кучу валить21.03.02 11:46 Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
> > На самом деле, > > делаешь оптимизацию как говарил KMiNT21 > > и линкуешь с msvcrt.lib > > Юзаешь спокойно malloc, free и всё остальное, > > и размер реально супер маленький
> Чем его оптимизация лучше импортов из msvcrt.dll? (плюс > убивание выравнивания)
Не стоит все смешивать :)
Если не нужно все что есть в RTL - не нужно этот код цеплять.
Если нужно кое-что, совсем мало - можно лишь это и загнать себе в EXE.
Если много нужно - лучше забыть про отключение RTL (а как/когда его цеплять - то уже другой вопрос.).
Вот и все.
[Win32] Да ё. За счёт чего оптимизация то?21.03.02 22:24 Автор: Biasha <Бяша> Статус: Member
> > > На самом деле, > > > делаешь оптимизацию как говарил KMiNT21 > > > и линкуешь с msvcrt.lib > > > Юзаешь спокойно malloc, free и всё остальное, > > > и размер реально супер маленький > > > Чем его оптимизация лучше импортов из msvcrt.dll? > (плюс > > убивание выравнивания) > > Не стоит все смешивать :) > > Если не нужно все что есть в RTL - не нужно этот код > цеплять. Куда цеплять? В ехе'шник - так не попадёт он туда. В память - да, но вероятней всего msvcrt.dll уже там.
> Если нужно кое-что, совсем мало - можно лишь это и загнать > себе в EXE. А можно вообще ничего не загонять - только импорты.
> Если много нужно - лучше забыть про отключение RTL (а > как/когда его цеплять - то уже другой вопрос.). > > Вот и все. Что всё? чем так крута оптимизация KMiNT21, что она лучше стандартной MS'овской?
[Win32] Итак22.03.02 10:52 Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member