Although the practice is rare, it is possible to change the protection attributes associated with a page or pages of committed physical storage. For example, say you’ve developed code to manage a linked list, the nodes of which you are keeping in a reserved region. You could design the functions that process the linked list so that they change the protection attributes of the committed storage to
PAGE_READWRITE at the start of each function and then back to
PAGE_NOACCESS just before each function terminates.
By doing this, you protect your linked-list data from other bugs hiding in your program. If any other code in your process has a stray pointer that attempts to access your linked-list data, an access violation ...