在制作合并分类项目C 的第三个对象时,请堆叠溢出



,所以我在C 中进行合并排序程序,该程序应该占用5个尺寸10、100、1000、10000和100000的尺寸,并告诉每个阵列大批。我能够很好地对所有数组进行排序,但是当我尝试制作合并排序类的第三个对象时,我遇到了堆栈溢出。我将合并排序类的前两个对象毫无问题,但是当我将Merge Sort类的第三个对象制作出来时,我会发现一个错误,认为存在堆栈溢出。当我调试程序时,它将我指向.asm文件,并且由于我不知道汇编,我不确定该怎么想。过去,我遇到了这个问题,这是因为我忘了动态地将内存分配给数组。我回头看,我所有的数组都已动态分配,所以我不确定为什么会遇到这个错误。这是我的主要内容,我标记了与星号相关的错误。对任何帮助都表示赞赏,这是我在这里的第二个问题,所以不要毁了我:(

//main.cpp
int main(){
    int* tenArray;
    int* hundArray;
    int* thouArray;
    int* tenThouArray;
    int*oneHundThouArray;
    tenArray = new int[9];
    hundArray = new int[99];
    thouArray = new int[999];
    tenThouArray = new int[9999];
    oneHundThouArray = new int[99999];
    srand((unsigned int)time(NULL));
    //Create arrays filled with random numbers
    for (int i = 0; i < ARRAY_TEN; i++) {
        tenArray[i] = rand();
    }
    for (int i = 0; i < ARRAY_HUND; i++) {
        hundArray[i] = rand();
    }
    for (int i = 0; i < ARRAY_THOU; i++) {
        thouArray[i] = rand();
    }
    for (int i = 0; i < ARRAY_TEN_THOU; i++) {
        tenThouArray[i] = rand();
    }
    for (int i = 0; i < ARRAY_ONE_HUND_THOU; i++) {
        oneHundThouArray[i] = rand();
    } 
    MergeSort tenSort;
    MergeSort hundSort;
    //******************************************************************
    MergeSort thouSort;//When typed the program will give an error
    //******************************************************************    
    //Here I am just calling my sort function from implementation file:
    //sorting 10 array
    tenSort.sort(tenArray, 0, ARRAY_TEN - 1);
    cout << endl << "Comparisons = " << tenSort.getCount() << endl;
    //sorting 100 array
    hundSort.sort(hundArray, 0, ARRAY_HUND - 1);
    cout << endl << "Comparisons = " << hundSort.getCount() << endl; 
    //****************************************************************
    //sorting thousand array  
    thouSort.sort(thouArray, 0, ARRAY_THOU - 1);
    cout << "comparison = " << thouSort.getCount() << endl;
    //****************************************************************
}

GetCount看起来像这样:

//in implementation
int MergeSort::getCount() {
    return count;
}

如果它有助于导致错误的ASM文件中的线路说:

test     dword ptr[eax],eax    ;probe page

Mergesort构造函数是否分配任何其他内存?实际上,您实际上在堆栈上的内存中耗尽了内存。该堆栈只能包含太多数据,并且多次宣布数十万个整数可能会增加很多。

最新更新