[33] volatile znamená, jak jsi správně napsal, že zabrání překladači přehazovat a ODSTRAŇOVAT přístupy do paměti. To odstraňovat je tam důležité, protože z kódu
a = b;
a = 3;
nemůže překladač vyhodit přiřazení a = b, pokud je proměnná a volatile.
To co jsi popsal (zabránění přeskládání přístupu do paměti) není volatile, ale říká se tomu memory barrier.