gpt4 book ai didi

c - 保护分配的内存

转载 作者:太空狗 更新时间:2023-10-29 15:58:47 24 4
gpt4 key购买 nike

我需要动态分配内存的某些部分,每个部分都有一些保护 - RW 或 RX。

我尝试通过 malloc 分配内存,但 mprotect 总是返回 -1 Invalid argument

我的示例代码:

void *x = malloc(getpagesize());
mprotect(x, getpagesize(), PROT_READ); // returns -1, it;s sample, so only R, not RW or RX

最佳答案

如果要分配一页内存,正确的选择大概是使用mmap()

void *x = mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0);

请注意,由于您将权限传递给调用,因此您实际上不需要之后使用 mprotect()。但是,您可以使用它稍后更改权限,当然,就像您想要在将页面设为只读之前将一些数据加载到页面中一样。您稍后可以使用 munmap() 释放它。

因为这是一个匿名映射,没有使用任何支持文件,所以它的行为很像 malloc() 在这个意义上。

关于c - 保护分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com