1. A method of computer memory protection using tagged architecture, the method comprising, indicating freed memory in a memory array, via a hardware circuitry, by tagging the freed memory with an uninitialized tag; initializing, via the hardware circuitry, the uninitialized tag on a pointer with an initial value to form an initialized tag; providing, via the hardware circuitry, a unique tag for each of two or more fields of a structure stored in the memory array, wherein the two or more fields of the structure are of different data types; providing, via the hardware circuitry, a matching tag for each pointer used to point to any of the two or more fields of the structure stored in the memory array; preventing unauthorized access beyond each of the two or more fields of the structure by comparing, via the hardware circuitry, the unique tag on the two or more fields of the structure with the matched tag of the pointer that is used to point to the two or more fields of the structure, wherein all tag values are assigned only by the hardware circuitry and are not accessible by any user processes; and propagating tag information via the hardware circuitry according to a memory protection policy.