Не нужно писать volatile лишний раз. В конце концов есть понятие memory barrier, на котором всё запишется как надо, если речь про указатель. volatile имеет смысл для самой переменной скорей, т.е. её могут читать в цикле в пределах функции, например, или писать в общем-то тоже. Но на выходе из функции (барьер) всё будет окончательно записано (почему для указателя в volatile нет смысла). Правда уже начинаю сомневаться для static функции и static-же переменной...