获得“可能丢失”的内存泄漏

时间:2016-04-05 06:01:58

标签: c++ memory-leaks

导致内存泄漏。 valgrind说它可能在这里的某个地方。任何帮助将非常感激。某处可能在enter relevant sort .... where algorithm is one of bubble, sort2, or sort 3

附近
void usageAbort(string progname, string message)
{
    cerr << message << endl
         << "Usage:  " << progname << " algorithm" << endl
         << "     where algorithm is one of "
         << "bubble, sort2, or sort3"
         << endl;
    exit(1);
}

/***************************************************************************/
/**                                                                       **/
/***************************************************************************/


string algorithmFromCommandLine(int argc, char *argv[])
{ 

    string program = argv[0];
    string algorithm = argv[1];
    if(argc!=2){
        usageAbort(program, "enter proper argument count");
    } 

    if((algorithm == "bubblesort") or (algorithm == "quicksort") or
        (algorithm== "insertionsort")){
            return algorithm;
    }
    else{
        usageAbort(program,"enter relevant sort");
    }
    return 0;

}

1 个答案:

答案 0 :(得分:1)

exit()不会调用自动对象的析构函数,特别是函数参数。因此,prognamemessage(以及代码中的其他变量)使用的内存不会被正确删除。一般情况下使用exit()并不是一个好主意,请参阅How to end C++ code