当我运行我的程序时,我会得到消息Killed和一些关于脚本的信息。在对这个问题做了一些研究之后,我发现我没有删除动态分配的变量(愚蠢的我!)。但是,现在,我觉得我已经解决了这个问题,但是当我使用Linux时,我仍然在终端中收到Killed消息。

    //does the of the manipulation of the load factor.
    for (int tableSize = fileLength; tableSize < fileLength * 2; tableSize = tableSize + 500)
    {

        //creates hash tables to be reused for each of the trials.
        for(int fileNum = 0; fileNum < NUMTIMES; fileNum++)
        {

            Array_HashTable* linear_div_hash = new Array_HashTable(tableSize);
            LinkedList_HashTable *chain_div_hash = new LinkedList_HashTable(tableSize);

            Array_HashTable *doubleHash = new Array_HashTable(tableSize);
            LinkedList_HashTable *mult_hash = new LinkedList_HashTable(tableSize);
            //Does the hashing for each of the files created.
            for (int index = 0; index < fileLength; index++)
            {
                linear_div_hash -> Linear_ProbeDH(read[fileNum][index]);
                chain_div_hash ->  Division_Hash(read[fileNum][index]);
                doubleHash -> Double_Hash(read[fileNum][index]);
                mult_hash -> Mulitplication_Hash(read[fileNum][index]);
            }//ends the index for loop.

            optimalOutput("VariableSizeLinearCollisionData", fileLength, tableSize, linear_div_hash -> getCollisions(), fileAppendage);
            optimalOutput("VariableSizeDoubleCollisionData", fileLength, tableSize, doubleHash -> getCollisions(), fileAppendage);
            optimalOutput("VariableSizeDivisionChainingCollisionData", fileLength, tableSize, chain_div_hash -> getCollisions(), fileAppendage);
            optimalOutput("VariableSizeMultiplicationChainingCollisionData", fileLength, tableSize, mult_hash -> getCollisions(),fileAppendage);

            linear_div_hash -> EndArray_HashTable();
            chain_div_hash-> EndLinkedList_HashTable();
            doubleHash -> EndArray_HashTable();
            mult_hash-> EndLinkedList_HashTable();

            delete  linear_div_hash;
            delete  chain_div_hash ;
            delete  doubleHash ;
            delete  mult_hash ;
        }//ends the fileNum for loop
    }//ends the parent for loop with the size as the variable.

基本上代码是这样工作的,第一个for循环控制哈希表的大小。第二个循环控制将使用哪个文件的数据进行散列。并为此实例化了一个哈希表对象。最后一个循环调用哈希函数。然后使用output函数将统计信息输出到文件中。然后使用类似于析构函数的函数从类中删除动态变量。我不能用析构函数来做这个,因为它给了我错误。然后我删除对象。
我能做什么?

最佳答案

在显示的代码中,您将对两种类型的对象分别调用newdelete四次。如果Array_HashTableLinkedList_HashTable的析构函数正确地释放了它们的对象分配的任何内存,那么这看起来非常好。
如果你还在从这段代码中泄漏内存,这些对象将是我的第一个嫌疑犯。

10-04 23:44