2015-03-31 71 views
-1

我收到此錯誤C++:0000005:在0x57B4B2CE(msvcr120d.dll)中的Program.exe未處理的異常訪問衝突讀取位置0xCDCDCDC8

Unhandled exception at 0x57B4B2CE (msvcr120d.dll) in Program.exe: 0xC0000005: Access violation reading location 0xCDCDCDC8 

,並在這部分代碼發生:

void Print_Function(char * output_file) 
{ 
    f = 0; 
    f = fopen(output_file,"w"); 

    for (int i = 0 ; i < count_total ; i++) 
    { 
     for (int j = 0 ; j < sizes[i] ; j++) 
     { 
      for (int k = 0 ; k < rules[i][j]->sizes_elements ; k++) 
       if (k < rules[i][j]->sizes_elements - 1) fprintf(f,"%i ", elements[rules[i][j]->elements[k]]); 
       else fprintf(f,"%i", elements[rules[i][j]->elements[k]]); 

      fprintf(f,":%.3f:%i\n", rules[i][j]->measure_value,rules[i][j]->index); 

      free(rules[i][j]->elements); rules[i][j]->elements = 0; 
      free(rules[i][j]); rules[i][j] = 0; 
     } 

     free(rules[i]); rules[i] = 0; 
    } 

    fclose(f); f = 0; 

    free(rules); rules = 0; 
    free(size_rules); size_rules = 0; 
    free(elements); elements = 0; 
} 

異常啓動代碼中的具體

free(rules[i]); rules[i] = 0;  

的這一部分的F後第一次迭代外部循環,是以前的自由做某件事,我沒有注意到,而不是像我期待它那樣?

任何幫助表示讚賞。

+0

'i'的價值是什麼?它出界了嗎? – 2015-03-31 19:36:16

+3

雖然這是C++標籤,但它看起來像C。 – Robinson 2015-03-31 19:36:56

+1

'任何幫助表示讚賞.'你想要任何幫助嗎?用'std :: vector'重寫這個函數,並停止malloc/free瘋狂。 – PaulMcKenzie 2015-03-31 19:40:38

回答

-1

Visual Studio中使用了幾個假地址爲內存狀態的指標:

  • 0x00000000:nullptr或NULL
  • 0xFEEEFEEE:刪除被稱爲
  • 0xCDCDCDCD:內存中創建但未初始化。
相關問題