Как проверить, перекрываются ли указатели? - PullRequest
5 голосов
/ 20 сентября 2011

Я прочитал совет здесь: http://www.cprogramming.com/tips/showTip.php?tip=183

высказывание:

Также следите за тем, чтобы указатели не перекрывались, если не указывали на один и тот же диапазон расположения памяти.

Как можно отслеживать такие вещи?Сравнение каждого указателя друг с другом, очевидно, глупо.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Вы не можете и не должны постоянно. Вероятно, это всего лишь подсказка отладки для какой-то проблемы, с которой когда-то столкнулся автор, и, возможно, она полезна во встроенных системах.

В общем, valgrind помогает вам больше, когда у вас есть проблемы с указателями, чем любое ручное сравнение.

0 голосов
/ 20 сентября 2011

Это способ проверки перекрытия:

T *a, *b;
// ...
if (abs((int)((void*)a - (void*)b)) < sizeof(T))
    // overlap

Но я не вижу причин для проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...