首页 / 知识
约c:64bit内存分配
2023-04-13 14:44:00

64bit Memory allocation我被要求在C中创建一个与Delphi兼容的dll,以进行简单的64位内存管理。 背景是Delphi中的系统需要分配大量的内存块,这些内存块将很好地进入32位可寻址空间之外。 Delphi开发人员向我解释说,他无法使用可用的Delphi命令分配内存。他说他可以保留64位地址,因此他只想调用我提供的函数来分配内存并向他返回64位指针。然后是另一个功能,以后可以释放内存。 现在,我只能使用VS 2008,因此首先我什至不确定我是否可以首先创建与Delphi兼容的dll。 任何Delphi专家都在乎帮助我。也许有一种方法可以实现他所需要的而无需重新发明轮子。其他开发人员必须在Delphi中遇到过此问题。 感谢所有评论。 只有64位进程可以寻址64位内存。 64位进程只能加载64位dll,而32位进程只能加载32位dll。 Delphi的编译器只能生成32位二进制文??件。 因此32位Delphi exe无法加载您的64位c dll。它可以加载32位c dll,但是该dll无法处理64位内存空间。您有点被这种解决方案所困扰。 使用正确的编译器选项和Windows开关,Delphi可以寻址3GB内存,而不会出现问题。如果使用物理地址扩展,则32位进程甚至可以访问更多内存。然后,它需要通过使用地址窗口扩展来在32位内存中换入和换出内存页面。 Delphi指针是32位的。期。您的Delphi开发人员也许可以"存储"您要返回给他的64位值,但是他无法访问它们指向的内存,因此这是徒劳的。 以前,我写过:-
但是,在2010年8月,Embarcadero在这里发布了新的路线图。它没有给出具体日期,但是提到了64位的Compiler Preview,预计将于2011年上半年发布。 您可能会看到Free Pascal,因为它包含64位版本,并且大多数都是与Delphi兼容的语法。 为了分配由多个进程共享的内存,应使用内存映射文件。 http://www.delphifaq.com/faq/delphi_windows_API/f348.shtml上可用的代码可用于在32位和64位进程之间进行通信。 步骤如下:
由您决定在内存映射文件中创建自定义二进制布局,以便共享任何数据。 根据设计,内存映射文件速度很快(这是内核级/ x86 CPU功能),并且可以处理巨大的内存(根据我的实验,一个32位进程最多可以使用1 GB)。 http://cc.embarcadero.com/Author/802978使用这种通信方式从32位Delphi程序中调用任何64位dll。 您可能还想添加一种方法来将该64位指针固定和取消固定到32位内存地址。由于这是Delphi,因此我非常确定它是Windows特定的,因此您不妨使用"地址窗口扩展"。这样,您可以支持将内存分配,释放以及固定和取消固定到32位地址范围,并且仍然利用64位内存分配空间。假定用户将实际提交内存,使其适合32位虚拟地址空间。 |
最新内容
相关内容
linux系统中管道命令?
linux系统中管道命令?,标准,系统,工作,命令,信息,通讯,管道,流向,连续,工具,Linux第二章-Linux常用命令1、linux常用命令有pwd命令、cd命令、llinux系统命令记不住?
linux系统命令记不住?,系统,工作,基础,地址,网络,服务,命令,第一,名称,目录,学LINUX基础命令总是记不住怎么办?1、按命令的单词意义来记忆是最linux命令安装新系统?
linux命令安装新系统?,系统,软件,工作,管理,在线,电脑,信息,基础,发行,数据,Linux安装基本命令1、linux系统常用操作命令linux系统常用操作命linux空间分配命令?
linux空间分配命令?,系统,数据,情况,分区,图片,地址,位置,软件,管理,信息,linux怎么分配系统空间1、系统分区 系统分区是指存放操作系统和启动linux系统用户组命令?
linux系统用户组命令?,系统,管理,密码,代码,用户组,用户,命令,邮箱,电脑,名称,Linux命令之用户组管理在Linux中,用户组是一种将一组用户聚合在linux下内存调整命令?
linux下内存调整命令?,系统,情况,地址,工具,总量,总额,管理,内存,机制,内核,正确理解linux运行内存过高的问题以及free命令使用命令free -m来linux小红帽系统命令?
linux小红帽系统命令?,系统,密码,环境,分析,电脑,命令,用户,大灰狼,大调,终端,小红帽系统怎么看电脑配置此电脑 右键 属性,可以看到cpu和内存。linux系统命令le?
linux系统命令le?,系统,地址,工作,基础,命令,网络,报告,信息,管理,软件,Linux实用命令有哪些?linux系统常用操作命令如下:ls:全拼list,功能是列出linux系统死机命令?
linux系统死机命令?,系统,工作,标准,设备,命令,时间,级别,方式,用户,电源,重启服务器的linux命令首先我首要把linux开机, 命令 rebot 这个是linlinux系统命令rz?
linux系统命令rz?,系统,数据,命令,文件,工具,平台,基础,情况,管理,服务,Linux文件相关命令1、命令一:cat cat命令应该是在Linux中查看文件内容linux重启系统命令是?
linux重启系统命令是?,系统,服务,网络,工作,设备,标准,命令,信息,名称,网络服务,重新启动linux系统命令1、Linux下常用的关机命令有: shutdownlinux虚拟机系统命令?
linux虚拟机系统命令?,系统,环境,密码,电脑,软件,工具,信息,位置,设备,虚拟机,在虚拟机中启动LINUX系统后,进入图形化界面的命令是什么?创建新