我们怎样才能确定我们的计划运作良好?

时间:2011-02-07 10:56:38

标签: c++

我们可以通过考虑以下问题来确定某项计划是否运作良好吗?

  1. 操作系统
  2. 成功回收内存
  3. 没有Stack Overflow
  4. 编写并运行一些代码以确定是否有任何溢出?

    我们的助手在通过其他程序运行我们的程序后给我们反馈。

    在反馈中,它显示是否存在溢出,我们是否以错误的方式使用free / delete,以及其他一些事情。

    我想知道她是怎么发现的?

4 个答案:

答案 0 :(得分:3)

可以通过多种方式推断出上述情况。

  1. 使用valgrind这样的工具:这个 有助于检测内存泄漏等

  2. 将要创建的模拟器 两个程序的输入 正面和负面的测试用例。

  3. 干杯!

答案 1 :(得分:3)

你说那个人有源代码 - 这意味着他可以通过阅读和思考或使用一些聪明的程序来分析程序。

例如,他可以看到以下内容:

void someCleverFunction()
{
   char* buffer = new char[100];
   if( someCondition ) {
       //do something with the buffer
       delete[] buffer;
       return;
   }
   Sleep( 1000 );
}

然后很明显,一旦someCondition未得到满足delete[],就不会调用{{1}},这确实是内存泄漏。

这就是所谓的静态代码分析。

答案 2 :(得分:1)

我会将“运作良好”定义为该计划的效果:它是否按照要求执行,是否在所有情况下都这样做?这应该处理1)清楚地描述程序应该做什么和2)尽可能彻底地测试所有情况。

然而,缓冲区溢出,内存泄漏和堆栈溢出是“表现良好”的一部分,这也意味着程序的健壮性:应该没有程序的情况崩溃:这里也需要彻底的测试,但是也应该使用代码审查和工具作为静态分析(例如覆盖率)和动态分析(例如valgrind),因为内存泄漏的问题可能会被忽视,直到你实际内存不足的时候。使用哪些工具取决于您的平台和程序规模。

答案 3 :(得分:0)

您使用的是Visual C ++吗? 如果是这样,请阅读:http://msdn.microsoft.com/en-us/library/5at7yxcs(VS.71).aspx

在linux上使用gcc使用Valgrind。它有一个非常好的文档。