Windows提供了2种不同的memory protection constants(例如VirtualProtect的第三个参数),它们的行为似乎相似:PAGE_EXECUTE
和PAGE_EXECUTE_READ
。
似乎PAGE_EXECUTE
应该是仅执行权限(没有读取)。但是,没有读取的执行权限没有多大意义,因为CPU需要在解码和执行它们之前从内存中读取指令。另外,我读到here确实PAGE_EXECUTE
内存也允许从中读取。
那么..为什么有两个不同的常数,它们之间的区别是什么?为什么我更喜欢一个呢?