What is the purpose of virtual addressing in memory management?
A. Allocate requests from applications to perform I/O
B. Allow processes to communicate with each other
C. Allow processes to access memory safely as they require it
D. Allow multiple programs to access memory simultaneously