首页 > 系统相关 >delphi 增加32位应用程序内存地址空间,解决“Out of memory”问题

delphi 增加32位应用程序内存地址空间,解决“Out of memory”问题

时间:2024-01-27 18:55:10浏览次数:25  
标签:Windows 32 delphi LARGE Application FILE memory IMAGE

增加32位应用程序内存地址空间,解决“Out of memory”问题

使32 位应用程序能够在64位Windows 访问最大 4GB 内存空间

在应用程序的 .dpr 文件中添加编译指令 {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

uses Winapi.Windows;

{$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE}

32位应用程序的地址空间的默认大小为 2GB,但可以在 32 位 Windows (支持的 Windows 版本 )上增加到 3GB,在 64 位 Windows 上增加到 4GB。地址空间总是有些碎片化,因此对大于 1GB 的单个连续块的 GetMem 请求不太可能成功。

代码

program Project1;

uses
  Vcl.Forms,
  Winapi.Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

D7中Windows单元中没有定义IMAGE_FILE_LARGE_ADDRESS_AWARE常量,需要先定义常量

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

const
  IMAGE_FILE_LARGE_ADDRESS_AWARE = $0020;

{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

参考

虚拟地址空间 (内存管理)

PE 格式

PE文件头标志(Delphi)

增加内存地址空间

标签:Windows,32,delphi,LARGE,Application,FILE,memory,IMAGE
From: https://www.cnblogs.com/txgh/p/17991790

相关文章

  • 代码随想录 day32 买卖股票的最佳时机 II 跳跃游戏 跳跃游戏 II
    买卖股票的最佳时机II代码非常简单但是想不到思路就比较难这里是这样的逻辑若在d4卖出d1买入获得收益那么实际可以拆解成d4-d3+d3-d2+d2-d1也就是d4-d1实际就是变成看明天减去今天收益是不是大于0就行亏钱就不要赚钱就要跳跃游戏一步步跟着跳就是看......
  • STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板使用FatFs中间件通过SPI通信协议对W25Q128芯片进行读写等操作3......
  • 32. 定语从句-定语从句的特殊用法
    定语从句的特殊用法:1>that做引导词时的省略。——如果在从句中充当宾语,that可以省略。分析长难句中如果见到2个名词或者代词直接放在一起,中间没有被连词或者符号隔开,通常都是生略略了that的宾语从句 I enjoy thebook (that) mymumboughtforme.(that 做宾......
  • Эффективные методы отладки микроконтролле
    STM32—этосерия32-битныхмикроконтроллеровARMCortex-M,выпущеннаяSTMicroelectronics.ПриотладкемикроконтроллеровSTM32обычноиспользуютсяинструменты......
  • STM32CubeMX教程25 PWR 电源管理 - 睡眠、停止和待机模式
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板的PWR电源管理,并了解STM32的睡眠、停止和待机模式3、实验......
  • 春秋云境CVE-2022-32991
    进来后看到如下页面,先试试能不能注册点击register,成功注册 登录后,发现url有?q=1,尝试闭合,没发现注入点 打开burp抓包,发现有挺多get参数,一个一个尝试 试到eid的时候,发现存在字符注入点,而且有回显,可以用union联合查询,确定有5列 eid=5b141b8009cf0'+union+select+1,......
  • [Bzoj 3252] 攻略 题解
    攻略题面\(n(\le2\cdot10^5)\)个点的有根树,\(k(\len)\)次从根走到叶子,每个点有权值,求经过的点的权值和的最大值.(同一个点只能算一次)Sol1我们设想一个叶子一个叶子加进去的过程。如果有两个从某个点到叶子的路径,我们可以如图把他分成两条路径。那么他满足贪心,也就是每次......
  • WebAssembly入门笔记[2]:利用Memory传递数据
    利用灵活的“导入”和“导出”机制,WebAssembly与承载的JavaScript应用之间可以很便利地“互通有无”。《与JavaScript的交互》着重演示了如何利用函数的导入和导出实现功能的共享,接下来我们主要关注数据的传递或者共享。宗地来说,WebAssembly与宿主程序之间的数据传递主要有如下三......
  • 【pwn】axb_2019_fmt32 --格式化字符串漏洞进一步利用
    照例检查程序保护情况堆栈不可执行,再导入ida看一下代码逻辑如上图此处代码有格式化字符串漏洞先找出偏移可以发现偏移是8那么我们可以利用printf泄露出libc地址,如何修改printf_got表为system的地址,然后再传入/bin/sh就可以getshellexp:frompwnimport*fromLibcSearc......
  • NanoFramework操作ESP32(一)_基础元器件篇(二11)_土壤湿度传感器
    编号名称功能1AO模拟输出2DO数字输出3GND电源地4VCC电源正......