根据 this thread ,malloc
分配的内存至少有PROT_READ | PROT_EXEC
,否则无法执行包含的函数。
man malloc
没有提到任何关于保护的问题。
最佳答案
malloc()
通常会返回具有读写权限的内存。一些架构(例如:较旧的 x86)可能不允许以直接的方式禁用执行权限,但这只是平台的缺陷。
如果你想从你分配的内存中执行代码,你必须明确地给予执行权限,并且可能你必须删除写权限,因为在同一内存上同时拥有写权限和执行权限被认为是潜在危险的在某些系统上(通常称为 W^X)。
还有其他几个线程从程序员分配的内存中执行代码:
Allocate executable ram in c on linux
Is it possible to execute code from the stack in standard C?
关于c - malloc分配的内存保护标志是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315296/