如何解决ilink64错误:致命:65536字节的Malloc失败
我正在Embarcadero RAD Studio 10.4上为C ++ Builder 6传输项目,并在x64上使用x86更改平台。我的项目包括五个* .dll和两个* .exe文件。 我在x64平台上成功传输了四个* .dll,但是第五个* .dll报告有关错误。当* .dll-文件制作时,我收到有关错误的消息:“内存不足”。我访问了网址:
http://docwiki.embarcadero.com/RADStudio/Sydney/en/Handling_Out_of_Memory_Errors
发现,在我发生的溢出中有三个堆:
- 代码堆大小
- 矮人str堆大小
- 信息堆大小
我逐渐扩大了所有堆的大小。但是,很快我就达到了限制:“ [ilink64错误]致命:65.536字节的Malloc在........ \ bins \ Win64 \ Debug \ my_dll.ildw_str,第6行中失败” 关于此信号矮化str堆大小。 我访问了网址:
https://stackoverflow.com/a/37537734/9494441
并提出了所有提示。
我尝试过:
- 使用lamarker工具设置大地址感知标志
- 在10.2.3版上将ilink32.exe和ilink64.exe程序RAD Studio替换为10.4版
- 已禁用/启用增量链接器
- 手动删除/ debug中的所有文件
- 全部重建
- 将文件添加到防病毒排除文件ilink32.exe和ilink64.exe
我什么也没做。如何解决这个问题?谢谢!
解决方法
这仅在调试中发生,对吧?
您有4个选项:
- 减少分配的部分的内存,使其超出项目需求。在其他部分中分配的内存不要超过需求。
- 减少模块公开的所有符号。有人告诉我,链接器不会检测到重复项,并且相同的符号会一再包含在内,这会使情况变得更糟。如果该项目较旧并且包含政策不完善,那么您可能需要在其中进行一些工作
- 编译所有版本,并仅在要调试的模块上启用调试信息。
- 尝试使用10.3.1,其中C ++ win64尚未使用C ++ 17。在10.3.2中,Win64已升级到C ++ 17,从而使链接程序问题更有可能发生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。