4.C++中Error in `./a.out': free(): invalid pointer: //0x000056513bb50c24 ***解決



#include <iostream>

int main(int argc, char const *argv[])
{
    
    int* array = new int[10];
    //給第一個元素賦值
    *array = 1;
    //打印第一個元素的地址
    std::cout<<array<<'\n';
    //輸出0x000056513bb50c20
    //指針增加1
    array += 1;
    //打印第二個元素的地址
    std::cout<<array<<'\n';
    //輸出0x000056513bb50c24
    //釋放內存
    array -= 1;
    delete[] array;
    //出現bug:
    //Error in `./a.out': //free():invalidpointer:0x000056513bb50c24 ***
    //delete[]調用free函數。
    //free函數的某個參數則是數組第一個元素的指針
    //若不把array減1,得到無效指針0x000056513bb50c24
    //那么數組第一個元素對應的內存沒有被釋放。
    //所以數組在釋放內存時,一定要記得把指針指向第一個元素。還有,沒事別閑着蛋疼去修改指針指向,除非萬不得已。
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM