Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码区32位位移内的可执行内存 在64位Windows上编写C++编译器,生成的代码有时需要调用C++编写的运行时函数。目前,我正在分配内存,用VirtualAlloc(0,字节,MEM\u COMMIT,PAGE\u EXECUTE\u READWRITE)来放置生成的代码;最后一个标志很重要,因为分配的内存不可执行_Windows_64 Bit_Jit_Virtualalloc - Fatal编程技术网

代码区32位位移内的可执行内存 在64位Windows上编写C++编译器,生成的代码有时需要调用C++编写的运行时函数。目前,我正在分配内存,用VirtualAlloc(0,字节,MEM\u COMMIT,PAGE\u EXECUTE\u READWRITE)来放置生成的代码;最后一个标志很重要,因为分配的内存不可执行

代码区32位位移内的可执行内存 在64位Windows上编写C++编译器,生成的代码有时需要调用C++编写的运行时函数。目前,我正在分配内存,用VirtualAlloc(0,字节,MEM\u COMMIT,PAGE\u EXECUTE\u READWRITE)来放置生成的代码;最后一个标志很重要,因为分配的内存不可执行,windows,64-bit,jit,virtualalloc,Windows,64 Bit,Jit,Virtualalloc,VirtualAlloc可能会返回64位地址空间中的任意位置的内存,这对于数据来说是很好的(通常需要超过4G字节的数据,因此它确实需要64位寻址),但x64调用指令的最有效形式需要32位IP相对偏移量,由于生成代码的数量小于4千兆字节,最好将它定位在从C++编译的代码的32位移位中。 有办法安排吗?您可以指定一个虚拟地址作为第一个参数,在该地址附近进行分配。要增加在您想要的边界内获得分配的机会,可以先保留虚拟内存区域,然后在需要时从保留空间请求提交的内存。 默认情况下,分配发生在底部,除非指定了

VirtualAlloc
可能会返回64位地址空间中的任意位置的内存,这对于数据来说是很好的(通常需要超过4G字节的数据,因此它确实需要64位寻址),但x64
调用
指令的最有效形式需要32位IP相对偏移量,由于生成代码的数量小于4千兆字节,最好将它定位在从C++编译的代码的32位移位中。
有办法安排吗?

您可以指定一个虚拟地址作为第一个参数,在该地址附近进行分配。要增加在您想要的边界内获得分配的机会,可以先保留虚拟内存区域,然后在需要时从保留空间请求提交的内存。 默认情况下,分配发生在底部,除非指定了MEM_TOP_DOWN,或者系统配置为执行自顶向下的内存布局以捕获指针截断问题。要点是,您只能增加在边界内进行分配的机会,但在分配超出边界时,应该有代码来处理