коллеги, кто хочет и может, поделитесь, пожалуйста, вашими методами борьбы с утечками памяти и работой с кривыми указателями в ваших проектах.
например, выделяете память строго через ваши аллоки, перегружаете new или что то еще более интересное?
что имею в виду под борьбой с кривыми указателями, например:
void foo(HANDLE h) {
std::vector<char> v;
DWORD size = GetFileSize(h, 0);
v.resize(size);
ReadFile(h, &v[0], ... // исключение, если size == 0
т.е. такие случаи, когда небезопасно извлекается указатель из чего-то, как в примере.
может, тоже есть какая то система, например, помечать все такие места чем-то, как то так:
#define GET_PTR(x) x
void foo(HANDLE h) {
std::vector<char> v;
...
ReadFile(h, GET_PTR(&v[0]), ...
-- когда что то непонятное падает, легко поиском по исходникам найти все такие места затем, что когда проект разросся, перелопачивать все исходники в поисках такого проблематично.
спасибо за любые мнения и рекомендации!