递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 162|回复: 3
打印 上一主题 下一主题

[其它] 【易语言】哪位大佬知道易语言内存分配错误怎么解决

[复制链接]

27

主题

106

帖子

733

积分

高级会员

Rank: 4

积分
733
跳转到指定楼层
楼主
发表于 昨天 21:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
发现操作的变量大于500M有概率触发内存分配错误,虽然32位应用可以申请的内存空间不大,但是500多兆就报错有点离谱了
请教下大佬是什么原因
系统环境:64位win10 物理内存24GB 可用20GB 虚拟内存配置为系统管理

如下图GIF 共演示了2个函数
函数1当变量内存占用到1.5G+时必报错
函数2当变量仅仅占用500M+时存在几率报错




测试代码: test.e.zip (1.13 KB, 下载次数: 3)


回复

使用道具 举报

18

主题

210

帖子

2567

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2567
沙发
发表于 昨天 22:31 | 只看该作者
是因为你在调试状态,如果编译出来测试就没问题了。调试状态下,申请的内存释放机制和编译状态下不一样。你点击按钮2, 点慢点没事,点快了,刚刚申请的内存还没有释放,自然就溢出报错了。按钮1 报错应该也是因为调试时会执行一系列额外的操作引起的(可能吧)。
回复

使用道具 举报

446

主题

2776

帖子

9524

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9524
板凳
发表于 昨天 22:32 | 只看该作者
不知道原因,但是我也是知道易语言32位和火山32位使用内存上限是没法比的,有可能是易语言使用vc6编译器太古老了,优化上远不如VS2019
回复

使用道具 举报

29

主题

2566

帖子

9049

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9049
地板
发表于 昨天 22:45 | 只看该作者
1、虽然理论上32位程序最大能调用2GB内存,但因为内存碎片和数据结构之类的影响,一般只能用到1.5G左右;

2、应该是内存释放有延迟,段时间内重复申请会超过内存上限;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-10-14 16:54 , Processed in 0.090658 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表