C++ 是否有任何API或方法阻止对动态分配内存的读访问(和写)?

C++ 是否有任何API或方法阻止对动态分配内存的读访问(和写)?,c++,c,linux,memory-management,C++,C,Linux,Memory Management,是否有任何API或方法阻止对动态分配内存的读取访问 char *ptr = malloc(4);` strcpy(ptr, "Hello");` 现在,我希望ptr没有读访问和写保护。 如何做到这一点 我不希望使用mprotect,因为它希望ptr指向映射内存,并且不可能每次都对动态内存进行AMP。mprotect仍然是答案。您需要一个与页面对齐的分配,没有可能需要写入的分配器控制信息-因此,请通过mmaping匿名内存来分配内存。只是不要让指针对其他代码可见?@fge:不,这不可能。它需要让

是否有任何API或方法阻止对动态分配内存的读取访问

char *ptr = malloc(4);`
strcpy(ptr, "Hello");`
现在,我希望ptr没有读访问和写保护。 如何做到这一点


我不希望使用mprotect,因为它希望ptr指向映射内存,并且不可能每次都对动态内存进行AMP。mprotect仍然是答案。您需要一个与页面对齐的分配,没有可能需要写入的分配器控制信息-因此,请通过mmaping匿名内存来分配内存。

只是不要让指针对其他代码可见?@fge:不,这不可能。它需要让人看得见。但是没有读写权限。如何实现它?@kingsmasher1:google for MAP\u ANONYMOUS@kingsmasher1,我不知道你的目标是什么,所以我不能说还有什么别的目标。保护内存通常不是一个高层次的目标,而是实现该目标的某种方法。告诉我们您正在编写什么类型的程序,您是在调试、编写驱动程序、进行测试还是做其他事情。@kingsmasher1,您看过吗?每次映射动态分配的内存时,它都有系统开销还是缺点?我想肯定是的。还有巨大的内存浪费,因为对malloc的一次调用将意味着分配一个完整的页面。对吗?@kingsmasher1:你不必每次需要存储5个字符的字符串时都调用mmap。调用mmap一次以分配多个页面,然后按顺序将字符串存储在那里,直到内存耗尽。那么您可能需要再次致电mmap以获取更多页面。@BlagovestBuyukliev:请参阅我上面的评论,关于我为什么希望避免这样做。