1. A method of compiling a first computer program into a second computer program, the first computer program including a reference to a pointer, and the second computer program configured to execute on a computer system including an address space including a plurality of memory addresses, each having a predetermined width, the method comprising: (a) generating mapping program code configured to generate a data representation of the pointer that is mapped to a selected memory address in the address space upon initialization of the pointer during execution of the second computer program, the data representation of the pointer having a predetermined width that is smaller than the predetermined width of the selected memory address; and (b) for each use of the pointer that requires an access to the address space, generating retrieval program code configured to retrieve the selected memory address using the data representation of the pointer during execution of the second computer programs wherein each use of the pointer that requires an access to the address space is selected from the group consisting of a pointer dereference, a pointer array reference, a pointer structure member reference, an assignment of a second pointer in a second data representation, a parameter in a function call, and combinations thereof.