c - malloc分配的内存保护标志是什么?

标签 c memory-management protection

根据 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/

相关文章:

C 指针和数组 : [Warning] assignment makes pointer from integer without a cast

c - 将文件读入C中的多维字符数组

c++ - 将包含主函数的 C 程序包装到 C++ 类中,

c - 如何证明释放链表的函数写得不好?

c++ - C++ 的分层内存分配器库

python - 在不实例化任何对象的情况下使用实例方法可能是危险的还是有用的?

c - 如何声明一个函数,该函数的结构包含一个数组,其大小由 argv 确定,作为参数?

php - 制作一个可以 self 更新并在企业级别保护它的 PHP 应用程序

iPhone App无线分发-如何保护.ipa文件?

encryption - 音频加密/保护