One of the important tasks that a compiler must perform is to allocate the resources of the target machine to represent the data objects that are being manipulated by the source program. That is, a compiler must decide the run-time representation of the data objects in the source program. Source program run-time representations 00 the data objects, such as integers and real variables, usually take the form of equivalent data objects at the machine level; whereas data structures, such as arrays and strings are represented by several words of machine memory. There are three types of storage strategies which is shown in fig as follows
| Code | 
| static data | 
| Stack | 
| Heap | 
(1) Static
(2) Stack-based
(3) Heap-based.
