打印

数组越界问题

[复制链接]
1121|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2013-6-28 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很简单的程序,是这样的
int *Array1 = new int[10*sizeof(int)];
int *Array2 = new int[10*sizeof(int)];
for(int i=0; i<10; i++)
{
    Array1[i] = i;
}

int*p1 = Array1;
int*p2 = Array2;

for(int i=0; i<10; i++)
{
    *p2++ = *p1++;
}
将array1的值传递给array2,这样p1跟p2最终都将超越数组一个元素,请问这种现象会导致程序奔溃吗?

以前我通常是这样来实现的:
for(int i=0; i<9; i++)
{
    *p2++ = *p1++;
}
p2=p2;
请问一般应该使用什么方法?  
我的实际数组是三维的,所以用指针依次递增来索引数组应该比用各个维度相乘相加来计算索引要快。

相关帖子

沙发
无冕之王| | 2013-6-28 23:39 | 只看该作者
int *Array1 = new int[10*sizeof(int)]; 也错了,用 new 不用乘上 sizeof(int),如果要开 10 个 int 的内存,用 int *Array1 = new int[10]; 就可以

使用特权

评论回复
板凳
yybj| | 2013-6-28 23:44 | 只看该作者
越界不越界自己控制

使用特权

评论回复
地板
sinadz| | 2013-6-29 12:45 | 只看该作者
很常见的错误

使用特权

评论回复
5
无冕之王| | 2013-6-29 13:09 | 只看该作者
比较容易犯的错误,也比较难发现的错误

使用特权

评论回复
6
baidudz| | 2013-6-30 12:39 | 只看该作者
yybj 发表于 2013-6-28 23:44
越界不越界自己控制

控制越界需要养成良好的编程习惯

使用特权

评论回复
7
vivilzb1985| | 2013-7-18 23:43 | 只看该作者
数组越界带来的问题是非常严重的,直接导致了你其他数组变量的数据都乱了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝