获取"possibly lost"内存泄漏

Getting a "possibly lost" memory leak

本文关键字:泄漏 内存 possibly 获取 lost      更新时间:2023-10-16

获取内存泄漏。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;
}

exit()不调用自动对象的析构函数,尤其是函数参数。因此,prognamemessage(可能还有代码中的其他变量)使用的内存没有被正确删除。一般来说,使用exit()不是一个好主意,请参阅如何结束C++代码。