 Memory protection, such as using non-executable stack and/or heap, can also be seen as additional run-time checks.This is used by many modern operating systems.The general idea is to identify sensitive code from application data by analyzing the source code.