答案 0 :(得分:2)
您的链接器正在尝试分配128 MB的内存。来自Embarcadero的以下信息最近发布在Embarcadero论坛上:
Error detected (LME288) in Seattle 10 update 1
错误是“内存不足”,错误。 “记忆力不足”的原因 链接器中的错误(以不同的形式出现)是链接器 必须在连续的堆中预先分配内存,然后将其用作它 链接,在过去这些堆不能调整,我们必须做到最好 猜测,所以在新的64位链接器中(并且还被添加到32位 链接器)我们允许人们手动调整这些堆的大小 当他们需要时。现在这些堆可能成为问题的原因是 并非所有系统都相同,有些人使用不同的软件进行映射 DLL进入链接器的地址空间,如Windows Hook DLLs,杀毒软件 软件所有这些DLL分配内存INSIDE链接器(任何应用程序 真的)地址空间,因此对堆的大小有影响 链接器可以分配。所以我们添加了这种手动调整堆的能力, 但我们也分配了最初的堆。
32位链接器有一个新的开关-GH ,见下面这类似于 ilink64开关。
交换机的语法是:
-GH =“
此选项-GH从XE3 Update 1开始存在,但显然没有记录?
要查看哪个堆内存不足,您可以从命令行尝试。
MSBuild / p:Platform = Win32 / v:diag XXXX.cbproj
这提供了其他信息,例如:
链接器堆上的溢出:代码
Linker Heaps
info 0x002d0000 0x0a000000
代码0x000d0000 0x00100000
数据0x00030000 0x08000000
bss 0x08000000 0x08000000
致命:内存不足
上面输出的左侧是在的字节数 时刻和右边为特定命名分配的字节数 堆。
链接器在启动时分配的默认堆大小为:
“system”,默认大小0x08000000
“info”,默认大小0x0A000000
“代码”,默认大小0x08000000
“rodata”,默认大小0x06000000 //只读数据
“数据”,默认大小0x08000000
“bss”,默认大小0x08000000
“tds”,默认大小为0x0FA00000
当你看到“未知堆”时,这通常是“tds”堆
将tds堆从0x0FA00000调整为0x0A000000的示例-GHtds = 0x0A000000
希望此信息可以帮助您和其他人解决LME288错误。
您可以为项目选项中的链接器指定其他标志,例如-GH
。