2012-06-13 1 views
0

예제 프로그램에서 다음 줄에 "heap corruption"오류가 발생합니다.Visual Studio의 FileOutputStream 개체에서 힙 손상

ofstream filePossibleHaplotype; 

"윈도우 Project_Name.exe에 중단 점을 트리거하고 있습니다. 이있을 수 있습니다 인한 Project_Name.exe하거나로드 된 DLL이 어떤 버그를 나타내는 힙의 손상."

파일 스트림 개체의 선언으로 인해이 오류가 발생합니다.

- 힙 메모리의 충돌에 이르게 SET = 1 NOT_SET = 0 길이 = 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; 
    } 

.

+0

무한 재귀? 'ofstream'이 생성자에서 힙을 사용하고 있다면, 코드 라인이 프로그램 초기에 발생한 손상의 희생물 일 가능성도 있습니다. – jxh

+1

상황에 맞는 코드를 게시하십시오. 그 특별한 라인은 거의 확실하게 범인이 아닙니다. – templatetypedef

+0

그 위의 줄에서 실제로 일어나지 않았습니까? 디버거의 노란색 화살표는 실행할 _next_ 행을 표시합니다. – David

답변

0

문제는 bit_array의 동적 메모리 할당 문제였습니다. 정상적인 정적 배열을 만들었고 코드는 정상적으로 작동했습니다. 하지만 동적 배열 할당 문제를 일으키는 이유를 잘 모르겠습니다. 나는 전역 변수로 int 포인터를 선언했습니다.

bit_array = new int (LENGTH);