Список статей в категории C++
Полезные функции дебагера Visual Studio
Заметки о полезных функция дебагера Visual Studio.
http://www.codeproject.com/Articles/469416/10-More-Visual-Studio-Debugging-Tips-for-Native-De
http://www.codeproject.com/Articles/518159/10-Even-More-Visual-Studio-Debugging-Tips-for-Nati
Не могу скомпилировать код с __try...__except?
Не могу скомпилировать код с __try...__except?
При компиляции кода в Visual Studio с __try...__except возникает ошибка: "error C2712: cannot use __try in functions that require object unwinding". Решить данную проблему можно разными путями:
- Вынести код в отдельную функцию без параметров.
- Сделать так, чтобы внутри блока не использовались переменные или параметры без деструкторов.
- Использовать параметр компиляции /GX-.
Обычно код выносится в отдульную функцию, которая при выходе не вызыва
delete и предекларация класса(warning C4150)
Используя предекларацию класса необходимо быть острожным. Если вызывать delete для предекларированного класса, то получите warning C4150. Это опасно тем, что деструктор для него не вызовется, т.к. объявление класса неизвестно.
Небольшой пример:
H-файл класса A.
class B; class A { public: A(); ~A() { delete pB; // warning C4150 } private: B* pB; };
Теги: C++
Система отчётов о крешах
CrashRpt - бесплатная библиотеку для отлавливание креш репортев для Windows. Библиотека умеет создавать отчёты, отправлять по почте или через web, собирать mini dump.
Виртуальные методы в Конструкторе и Деструкторе C++
В конструкторе и деструкторе всегда вызовутся виртуальные методы самого класса:
class A { public: virtual ~A() { Free(); printf("~A\n"); } virtual void Free() { printf("A::Free\n"); } }; class B: public A { public: virtual ~B() { Free(); printf("~B\n"); } virtual void Free() { printf("B::Free\n"); } }; int _tmain(int argc, _TCHAR* argv[]) { A* b = new B(); delete b; return 0; }
Вывод:
B::Free ~B A::Free ~A
Теги: C++
FFmpeg крешится в Release
Если FFmpeg крешится в Release под Windows, то в настройках проекта Visual Studio для линковки включите "References: Keep Unreferenced Data (/OPT:NOREF)" или пропишите /OPT:NOREF в командной строке.