#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;
}
原文链接: https://www.cnblogs.com/jielearscoding/p/12509767.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/194462
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!