C++ 我们如何确定我们的计划是否有效?

C++ 我们如何确定我们的计划是否有效?,c++,C++,我们能否通过考虑以下问题来确定一个程序是否运行良好 操作系统成功地回收了内存 没有堆栈溢出 在编写和运行一些代码以确定是否存在溢出之后 我们的助手在通过其他程序运行我们的程序后给我们反馈 在反馈中,它显示了是否存在溢出,我们是否以错误的方式使用free/delete,以及其他一些内容 我想知道她是怎么发现的 可以有多种方法来推断上述情况 使用valgrind之类的工具:此 帮助检测内存泄漏等 将要创建的模拟器 为您的程序输入两个 阳性和阴性测试用例 干杯 可以有多种方法来推断上述情况 使用val

我们能否通过考虑以下问题来确定一个程序是否运行良好

  • 操作系统成功地回收了内存
  • 没有堆栈溢出
  • 在编写和运行一些代码以确定是否存在溢出之后

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

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


    我想知道她是怎么发现的

    可以有多种方法来推断上述情况

  • 使用valgrind之类的工具:此 帮助检测内存泄漏等

  • 将要创建的模拟器 为您的程序输入两个 阳性和阴性测试用例


  • 干杯

    可以有多种方法来推断上述情况

  • 使用valgrind之类的工具:此 帮助检测内存泄漏等

  • 将要创建的模拟器 为您的程序输入两个 阳性和阴性测试用例

  • 干杯 在使用gcc的linux上,使用Valgrind。它有一个很好的文档。

    < P>你使用Visual C++吗? 如果是,请阅读以下内容:


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

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

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

    void someCleverFunction()
    {
       char* buffer = new char[100];
       if( someCondition ) {
           //do something with the buffer
           delete[] buffer;
           return;
       }
       Sleep( 1000 );
    }
    
    很明显,一旦
    someCondition
    不满足,就不会调用
    delete[]
    ,这肯定是内存泄漏


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

    你说这个人拥有源代码,也就是说他可以通过阅读和思考或者使用一些聪明的程序来分析程序

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

    void someCleverFunction()
    {
       char* buffer = new char[100];
       if( someCondition ) {
           //do something with the buffer
           delete[] buffer;
           return;
       }
       Sleep( 1000 );
    }
    
    很明显,一旦
    someCondition
    不满足,就不会调用
    delete[]
    ,这肯定是内存泄漏

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

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

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

    我将定义“运行良好””作为计划的有效性:计划是否按照要求执行,以及在所有情况下是否都执行?应处理此问题:1)明确说明计划应执行的操作,2)尽可能彻底地测试所有情况


    然而,缓冲区溢出、内存泄漏和堆栈溢出是“表现良好”的一部分,这也意味着程序的健壮性:不应该出现程序崩溃的情况:这里还需要进行彻底的测试,但代码审查和静态分析(如覆盖性)和动态分析等工具(例如valgrind)也应该使用,因为内存泄漏的问题可能会在您实际耗尽内存之前很久才被注意到。使用哪些工具取决于您的平台和程序的规模。

    您是否向该人员提供了源代码?列出的两个标准是必需的,但还不够。程序可能有其他缺陷,例如产生wrong输出,或者对于预期目的来说太慢。@mAlters,我编写一些程序来确定其效率(wrt时间)希望我下面的回答能解释清楚。你给了那个人源代码了吗?列出的两个标准是必需的,但还不够。一个程序可能有其他缺陷,例如输出错误,或者速度太慢,无法达到预期目的。@MSalters,我写了一些程序来确定它的效率(wrt时间)希望我下面的回答能解释清楚。这很好,但只适用于CRT的调试版本,而且没有源代码也不是很有用。这很好,但只适用于CRT的调试版本,没有源代码也不是很有用。