uint32_t u;
float f = …;
memcpy(&u, &f, sizeof u);
/* use u as a uint32_t in computations */
You cannot do the same thing with malloced memory: if u had been malloced memory instead of a variable, it would have been illegal to access that memory with an lvalue of type uint32_t in subsequent computations. 6.5:6 is certainly no license to use malloc'ed memory any which way.