博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ new一个数组时,指针移动程序崩溃问题
阅读量:4098 次
发布时间:2019-05-25

本文共 674 字,大约阅读时间需要 2 分钟。

问题代码:
#include 
using namespace std;int main(){ int a[] = { 12, 42, 6, 17, 32, 4, 19 }; int *pia = new int[7]; for (size_t i = 0; i < 7; ++i){ pia[i] = a[i]; } for (size_t i = 0; i < 6;++i){ cout << *pia++ << " "; } cout << endl; delete [] pia; return 0;}

由于在输出*pia时用了++,改变了pia指针的位置,使得在delete [] pia时,无法找到头指针的位置,无法delete。

可以通过记录pia的初始位置,在输出完后,再复原

#include 
using namespace std;int main(){ int a[] = { 12, 42, 6, 17, 32, 4, 19 }; int *pia = new int[7]; int *pia_copy = pia;//记录pia的初始位置 for (size_t i = 0; i < 7; ++i){ pia[i] = a[i]; } for (size_t i = 0; i < 7;++i){ cout << *pia++ << " "; } pia = pia_copy;//复原pia的位置 cout << endl; delete [] pia; return 0;}

转载地址:http://gjmii.baihongyu.com/

你可能感兴趣的文章
【Unity】坑爹的Bug
查看>>
【算法】求数组中某两个数的和为目标值
查看>>
如何高效学习动态规划?
查看>>
动态规划法(六)鸡蛋掉落问题(一)
查看>>
奇异值分解(SVD)的原理详解及推导
查看>>
算法数据结构 思维导图学习系列(1)- 数据结构 8种数据结构 数组(Array)链表(Linked List)队列(Queue)栈(Stack)树(Tree)散列表(Hash)堆(Heap)图
查看>>
【机器学习】机器学习系统SysML 阅读表
查看>>
最小费用最大流 修改的dijkstra + Ford-Fulksonff算法
查看>>
最小费用流 Bellman-Ford与Dijkstra 模板
查看>>
实现高性能纠删码引擎 | 纠删码技术详解(下)
查看>>
scala(1)----windows环境下安装scala以及idea开发环境下配置scala
查看>>
zookeeper(3)---zookeeper API的简单使用(增删改查操作)
查看>>
zookeeper(4)---监听器Watcher
查看>>
zookeeper(2)---shell操作
查看>>
mapReduce(3)---入门示例WordCount
查看>>
hbase(3)---shell操作
查看>>
hbase(1)---概述
查看>>
hbase(5)---API示例
查看>>
SSM-CRUD(1)---环境搭建
查看>>
SSM-CRUD(2)---查询
查看>>