码迷,mamicode.com
首页 > 移动开发 > 详细

(一)C++入门——指针与数组——Expression: _CrtIsValidHeapPointer(Block)

时间:2019-12-06 00:19:43      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:传递   ali   primer   说明   内存   分配   ssi   span   express   

最近在入门c++,在看《c++ Primer Plus》一书。书中P106提到,删除使用New创建的数组时,是将指针重新指到第一个元素后,再进行的删除操作。代码如下:

int *ptest = new int[3];

ptest[0]=1;

ptest[1]=2;

ptest[2]=3;

cout<<"*ptest "<<*ptest<<endl;

ptest = ptest+1;//此时指针指向第二个元素,也即:ptest[1]

cout<<"*ptest "<<*ptest<<endl; //这里输出 2

delete [] ptest; //NOT OK .若是此时进行删除分配的内存,将会报Expression: _CrtIsValidHeapPointer(Block)

delete [] (ptest-1);//OK  地址-1后,将返回第一个元素所在的地址。 或者说,delete 操作符作用于数组时,传递的参数必须是数组开始的地址

//备注:这个报错是否说明,删除new分配的数组内存时,必须需要指针是指向第一个元素呢?

知识点:

1、使用New分配的内存空间,必须要使用delete进行回收

(一)C++入门——指针与数组——Expression: _CrtIsValidHeapPointer(Block)

标签:传递   ali   primer   说明   内存   分配   ssi   span   express   

原文地址:https://www.cnblogs.com/liangxiarong/p/11992826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!