0

在我的示例程序中,我在下一行收到“堆损坏”错误。

ofstream filePossibleHaplotype;

“Windows 已在 Project_Name.exe 中触发断点。这可能是由于堆损坏,这表明 Project_Name.exe 或其已加载的任何 DLL 中存在错误。”

文件流对象的声明如何导致此错误?

[编辑 - 添加了几段代码] SET = 1 NOT_SET = 0 LENGTH = 5

void fill_Unique_Bit_Array()
    {
        int zeroFlag = NOT_SET;
        int oneFlag = NOT_SET;
        bit_array = new int(LENGTH);
        for(int i =0; i<LENGTH; i++)
        {
            for(int j =0; j<NUMBER_OF_READS; j++)
            {
                if(readMartixArray[j][i] == '0')
                    zeroFlag = SET;
                else if (readMartixArray[j][i] == '1')
                    oneFlag = SET;
            }
            if(zeroFlag==SET && oneFlag==SET)
                bit_array[i] = SET + SET;
            else if(zeroFlag==SET && oneFlag==NOT_SET)
                bit_array[i] = NOT_SET;
            else if(zeroFlag==NOT_SET && oneFlag==SET)
                bit_array[i] = SET;
            zeroFlag = NOT_SET;
            oneFlag = NOT_SET;
        }
        reverse_bit_array = array_Reverse(bit_array, LENGTH);        
    }

这个函数调用,

void find_all_possible_combinations(int ,int, int, int )
    {
        ofstream filePossibleHaplotype;
    }

这会导致堆内存崩溃。

4

1 回答 1

0

问题在于 bit_array 的动态内存分配。我创建了一个普通的静态数组,代码运行良好。但我不确定为什么动态数组分配会导致问题。我已将 int 指针声明为全局变量。

bit_array = new int(LENGTH);

于 2012-06-13T23:03:06.337 回答