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