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.