我想以堆内存的方式进行只读.对于我曾尝试与memalign()与mprotect()来自memalignment我什么都能搞定,memalign可分配内存从进程堆离开.但是.
我想让堆的一部分只读.对此有何帮助?
malloc()->mmap()->mprotect() 一个假设的想法,但不确定这是否有帮助...上面要实现的任何示例代码?
我需要保护堆内的内存地址.使用malloc()我得到0x10012008附近的地址,而使用mmap()它是0xf7ec9000.我的意图是使堆-meory的一部分只被读取以捕获可能试图通过该堆运行的任何trampler.
尝试使用类型转换的指针调用析构函数时,我的代码出现分段错误。但是如果我将析构函数更改为非虚拟的,它就可以正常工作。
#include <iostream>
using namespace std;
class Test
{
public:
Test() { cout << "Cons" << endl;}
~Test() {cout << "Des"<<endl;}
void *var_ptr;
};
class Test3
{
public:
Test3() { cout << "Cons3" << endl;}
//virtual ~Test3(){cout << "Des3" << endl;};
~Test3(){cout << "Des3" << endl;};
};
class Test2:public Test3
{
public:
Test2() { cout << "Cons2" << endl;}
~Test2() {cout << "Des2"<<endl;}
};
int main ()
{
Test *testPtr = new Test();
int *ivalue ;
ivalue = new int; …Run Code Online (Sandbox Code Playgroud)