严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1060 编译器的堆空间不足
创始人
2025-06-01 03:54:54
0

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、产生原因
  • 二、解决方法
    • 1.修改

前言

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1060 编译器的堆空间不足
在这里插入图片描述

一、产生原因

我的工程是从QtCreator中移植到vs2019,因为QtCreator上面调试器没有vs的好用。在使用vs2019编译的时候调试器报错。而工程中加载了很多图片,这些图片基本都是9295*6984的分辨率。使用QListWidget加载这些图片加载需要10多秒,而且无法在控件中拖动,所以就是用QGraphicsView来加载图片
在这里插入图片描述

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、解决方法

1.修改

打开QtQGraphicsView.vcxproj文件,QtQGraphicsView是你的工程名,搜索“Globals”在文件中找到

x64

以VS2019,编译生成64位程序为例。由于VS默认使用32位编译器(即编译器为32位并交叉编译64位可执行文件),位于C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe。
在这里插入图片描述
此时该编译器最大可访问内存<4G,在编译一些超大文件时,我这里的图片不是特别大,可能所需内存超过4G,那么cl.exe本身是32位,是访问不了超出4G内存的,所以会报编译器堆空间不足。
我们可以通过任务管理器中,找到"Microsoft C/C++ Compiler Driver",这就是编译器Cl.exe。在编译时,可以看到该进程占用内存达到接近4G时,进程退出,VS报错,说明堆空间占用已超4G,编译器崩溃了。
这句话的意思就是,指定VS使用64位编译器cl.exe来进行编译,这样编译时,可访问内存将达到4GB以上,便不会报错了。
因为编译器cl.exe,在编译期间占用内存超过4G导致(可打开任务管理器检查cl.exe的内存占用情况)。
cl.exe默认使用32位,32位程序最大可使用地址空间为2^32=4GB,因此使用内存超过4G时会导致进程崩溃。
直接的解决方法是改用64位的cl.exe
如果按照上面方法处理的话,在32位系统中将无法编译。
因此还是彻底解决问题,就要找到根因:
(1)代码中是否定义了超大全局静态数组?如果有可改为动态申请内存动态加载。
(2)资源文件是否引用了超大的文件?如果有可改为运行期访问文件,不要编译到资源文件。

相关内容

热门资讯

嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...
家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...