У меня есть утечка памяти в моей программе. Я заменил все вызовы на malloc
(и new
) вызовами моей собственной функции, которая отслеживает выделенные вещи. В конце программы я сравниваю вещи, выделенные в начале, и те, которые находятся в конце, чтобы получить список всего, что «протекает».Как проверить, заканчивается ли число в значении?
Конечная цель - взять список «утечек» местоположений и поместить их в массив. Каждый раз, когда что-то выделяется, оно проверяется против списка «утечек» адресов, и если есть совпадение, он вызывает специальную функцию, в которой я могу установить точку останова (где я могу затем выяснить, какие объекты протекают и справиться с ними надлежащим образом).
Проблема в том, что первые несколько частей адреса меняются каждый раз, когда программа запускается. Например, в первый раз один «утечка» адреса будет 0x10c10
, а в следующий раз он может быть 0x20c10
. Последние несколько цифр всегда одни и те же, но первые несколько нет.
Есть ли способ сравнить только последние несколько цифр? Я думал об использовании мод, но я не смог придумать что-нибудь, что сработало. Это обычные целые числа, а не строки или что-то еще.
Как этот 'mod' (я предполагаю, что вы имеете в виду'% ') не работает? Это простая математика, как она не может работать? –
Just mask: 'addr = number & 0x0000FF;' –
Карта памяти разных процессов не гарантируется одинаковой, даже если разные процессы работают с одним и тем же исполняемым файлом. Даже последние бит в любом адресе. –