1. A method of protecting an application computer program during execution outside of a special environment against pointer corruption attacks, the application computer program implemented using the C programming language, the method comprising the steps of: identifying a function; implementing a protected version of the function, the protected version of the function including: encrypting values of all data pointers each time the values of the data pointers are modified; and decrypting the encrypted value of at least one data pointer before use each time the data pointer is read; and exporting the protected version of the function and an unprotected version of the function, wherein said encrypting and decrypting steps are effected by instructions generated by a compiler during compilation of the said program.