В общем, мнение мое таково: если возвращается указатель и нужно показать вызывающей стороне что его использовать не надо, функция должна вернуть "магическую константу". Например, 0, -1, 0xDEADC0DE и так далее. Поскольку указатель - фактически адрес в памяти, возвращение "левого" адреса при обращении к нему приведет к исключению, а не продолжению работы программы, что есть хорошо. Есть НО: разные операционки по-разному выделяют память, где-то шансы на валидность адреса 0xDEADBEEF сильно больше нуля. Поэтому идеально использовать 0 или -1: такие адреса будут доступны программе с минимальной вероятностью.