簡體   English   中英

realloc 拋出“訪問沖突讀取位置”

[英]realloc throws “Access violation reading location”

我正在使用 Visual Studio 16.6.0。 在我的 C 程序的某些部分中,我有一個動態數組(myvector),我試圖調整它的大小以包含一定數量的元素(可變數量的記錄)。 使用完全相同的輸入數據,有時此代碼可以工作,或者在realloc執行中隨機拋出“訪問沖突讀取位置”。 我的兩個問題:

  1. 如果realloc有問題,錯誤控制不應該將其檢測為返回的 NULL 嗎?

  2. 最重要的是:我做錯了什么? 如果這是一個愚蠢的問題,我很抱歉,但我不知道為什么這個 realloc 會拋出隨機異常,即使一次又一次的輸入完全相同。

    void* temp; //temporal pointer for realloc
    int* myvector = malloc(sizeof(int));

    int numberofrecords = 0;


    while(numberofrecords<100){  

       if (some_condition){
          numberofrecords++;
          temp = realloc(myvector, numberofrecords * sizeof(int));
          if (temp == NULL) { 
              printf("ERROR in realloc\n");
              free(myvector);
              exit(EXIT_FAILURE);
          }
          else {
              myvector = temp;
          }          
       }
    }//while end

謝謝

正如上面評論者所說,這是由於未由 '\0' 完成的字符串的重新分配將一些垃圾字符附加到原始字符串中,這使得附加到它的字符串超出了字符串大小。

非常感謝您的幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM