there are two benefit of CRC at the end of frame
1st at the receiver side
at the transport layer of receiver side when the data passes through the TL ,TL calculate the CRC as the data passes through it and at the end of the frame TL layer calculate whole of the CRC bit and immediately matches it with the CRC bit which is actually attach to the frame if it found that both CRC (one which is calculated and second which actually attach to frame) are same then data is correct otherwise something is wrong (may be data or CRC) .
and same process can happen at DLL
second at the sender side
placing the CRC at the end of a frame reduces packet latency and reduces hardware buffering requirements. On the transmit side, hardware can read and transmit bytes of the frame immediately. The transmitter calculates the CRC on the fly as data passes through, then simply appends the CRC the tail of the frame