#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; }