导致内存泄漏。 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;
}
答案 0 :(得分:1)
exit()
不会调用自动对象的析构函数,特别是函数参数。因此,progname
和message
(以及代码中的其他变量)使用的内存不会被正确删除。一般情况下使用exit()
并不是一个好主意,请参阅How to end C++ code。