Нет .
Чтобы быть более полезными, нам действительно нужно знать предполагаемый вариант использования.
Если вы используете те же указатели, чтобы иногда ссылаться на память, полученную с помощью malloc
, а в других случаях ссылаться на строковые литералы или автоматические переменные, тогда вы должны просто сохранить флаг рядом с указателем, который указывает, указывает ли он на что-то полученное malloc
. Или вы можете просто сохранить вторую копию указателя с именем ptr_to_free
, это NULL
, когда данные не нуждаются в освобождении. Это также имеет то преимущество, что ваш «основной указатель» может «перемещаться» и указывать на разные части объекта, поскольку вы будете сохранять исходный / базовый указатель свободным отдельно.
Если это просто для того, чтобы избежать двойных проблем, вам просто нужно исправить свой код, чтобы они не возникали. Установка указателя на NULL сразу после того, как вы освободите то, на что он указывает, является неаккуратным трюком, который обычно помогает вам в этом, но у вас, вероятно, есть большие проблемы с дизайном, чтобы переосмыслить ...