Опять про CRT. Да, я знаю, тема боян

Тема в разделе "LANGS.C", создана пользователем rpy3uH, 2 дек 2011.

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    В проекте используется STL: vector, deque и строки std::wstring. Проект в MSVS 2010.

    Проект DLL
    Multi-threaded DLL (/MD).
    Enable C++ Exceptions - No

    Возможно ли выпилить из этого проекта всю CRT?
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    rpy3uH

    Думаю это можно сделать, если заменить аллокаторы-компораторы на свои собственные. Вроде как шаблонные параметры это все позволяют.
     
  3. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    MSVCP100.DLL
    как например избавиться от этого?
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    rpy3uH

    Ах да, эксепшены ж еще. Хм, написать свои?
     
  5. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    не знаю. может заглушки где-нибудь надыбать?

    Ставлю "Ignore All Default Libraries" - Yes

    всего 15 штук, всего лишь. надыбать бы аналоги для них....
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.870
    вроде есть в ntdll.dll...

    отключить стековые куки в настройках проекта...

    написать свои через HeapAlloc/HeapFree из kernel32.dll или через malloc/free из msvcrt.dll...

    отключить rtti...

    как-то реализовывать руками))) можно посмотреть в исходниках STL...

    "спасибо, кэп"?))
     
  7. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    new, delete, check_cookie и memmove я и так знал
    остальные проблема.
    проще свой vector написать

    покопался в исходниках выяснил что _Orphan_all отвечает за удаление элементов
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    rpy3uH
    наверно проще подправить готовый
     
  9. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    не знаю.....
     
  10. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    Короче выпили я CRT из программы. Классы перепилил деструкторы вручную вызываю, все конструкторы запихал в отдельный, обычный метод.

    но ошибка всё равно выходит при линковке

    Несколько раз перелопатил код но ни одного даже намёка на delete не нашёл
    Написал такой оператор delete, в выводом MessageBox
    Код (Text):
    1. void __cdecl operator delete(void* p)
    2. {
    3.     MessageBoxA(0,"123123","1123",0);
    4.     AuxFreeMemory(p);
    5. }
    и что же вы думаете? MessageBox ни разу не вышел. В чём может быть проблема?
     
  11. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Может временные объекты, а просто место где они создаются редко исполняется.(т.е. банально до этого место не дошло)

    а чем вам статическая линоквка не устраивает? вроде как зависимости от сторонней библиотеки уже не будет)
     
  12. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    тестирую пробую.... ни разу не вылезло это сообщение

    мне нужна компактность. ну ты понял что я пишу....
     
  13. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    А погрузить в IDA, найти по строке где вызов mesagebox'a а потом посмотреть кто вызывает?
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.870
    ну это как раз таки плохо, так как видимо у тебя выделенные на куче объекты не уничтожаются, происходит утечка памяти...

    скорее всего это происходит из-за:
    зачем это делать, если достаточно перегрузить new и delete операторы и конструкторы с деструкторами будут автоматически вызываться...
     
  15. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    проверяю, тестирую.....
    ну там не суть, у меня примерно так:
    Код (Text):
    1. myClass::myClass()
    2. {//основной конструктор
    3.   Create();
    4. }
    5.  
    6. myClass::Create()
    7. {
    8. //здесь весь код.
    9. }
     
  16. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    нееее, IDA надо качать устанавливать. у меня и так этот визуал 2010 занял почти весь системный раздел. я без трололо
     
  17. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    вот время тестирования нашёл кучу мелких ошибок в программе, но где вызывается delete так и не нашёл. такие дела
     
  18. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    rpy3uH
    как-то давно мне помогал профилировщик памяти от компуваре, не вызывался из-за кода с течкой

    оффтоп :)
    сейчас прибежит Asterix и предъявит за копирайт..
     
  19. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    у меня программа, что-то типа мини сервака работающего в сети. так вот, за минуту она может создать/удалить до 1000 мелких объектов, после получаса работы никаких утечек...
     
  20. sivsoft

    sivsoft New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    82
    rpy3uH
    А какие вы заглушки написали? Интересуют все, но особенно xout_of_range xlenght_error