You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Dart项目时dart.exe占满内存导致项目无法运行的解决方法

Dart运行时dart.exe占满内存问题修复

问题根因

该问题由代码中的无限死循环触发:oddOrEvenNum函数内do-while循环的终止条件编写错误,循环永远无法退出,导致dart.exe进程持续消耗内存,最终占满全部系统内存使得项目无法正常运行。
异常截图

具体错误点

原代码do-while逻辑存在两处核心错误:

  • 循环终止条件写反:原条件为while (number < 10),do-while会先执行循环体再判断条件,传入参数12时,第一次执行循环体后number ~/=10运算得到值1,永远满足number <10的判断条件,循环会无限重复执行。
  • 位数计数逻辑冗余:循环内判断number <10时额外给计数加1,会导致位数统计结果错误。

修复后代码

void main(List<String> arguments) async {
  String checkNum = oddOrEvenNum(12);
  print(checkNum);
}

String oddOrEvenNum(int number) {
  if (number < 10)
    return 'Odd digit';
  else {
    int digitNum = 0;
    int temp = number;
    do {
      temp ~/= 10;
      digitNum++;
    } while (temp >= 10);
    digitNum++; // 补充最后剩余个位的计数

    if (digitNum % 2 == 0)
      return 'Even number with $digitNum digits';
    else
      return 'Odd number with $digitNum digits';
  }
}

验证结果

运行修复后的代码,传入参数12时,循环仅执行1次就会因temp值为1、不满足>=10的终止条件退出,最终正确统计位数为2,输出Even number with 2 digits后程序正常结束,不会再出现内存占满的问题。

日常编写循环逻辑时,写完优先验证终止条件是否能在预期输入下正常触发,可大概率避免这类无限循环导致的资源耗尽问题。

内容的提问来源于stack exchange,提问作者Công Hiến

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:45:45