使用静态程序分析解决内存不足错误

时间:2017-07-28 07:15:39

标签: oop out-of-memory static-analysis

内存不足是java和其他OO语言中最常见的错误之一。 我们可以应用静态程序分析来减少“内存不足”错误吗? 我正在寻找旨在减少此错误而不运行代码的方法。 是否有任何特定的分析领域在此进行研究?

1 个答案:

答案 0 :(得分:1)

是的,静态分析仪能够检测到越界。它们比动态分析器略差,因为它们无法追踪指针使用的复杂情况。而且,静态分析仪无法获得一些信息。让我们考虑一个抽象的情况:

void OutstandingIssue(const char *strCount)
{
  unsigned nCount;
  sscanf_s(strCount, "%u", &nCount);

  int array[10];
  memset(array, 0, nCount * sizeof(int));
}

数组索引是否超出界限,它将取决于数据 从外面收到。静态代码分析器在这里无能为力。它在此处可以执行的最大操作是警告输入的值未经检查即可使用。动态分析器将在测试程序期间检测到错误,同时它将接收各种输入数据变体。这些主题将here提供更多详细信息。

但如果有一个问题“静态分析仪确实有帮助吗?”,答案是肯定的,确实如此。例如,PVS-Studio团队收集的一组错误包含静态分析器检测到的大量此类错误:V512V645

相关问题