数组越界问题

[复制链接]
 楼主| 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 | 显示全部楼层
很常见的错误
无冕之王 发表于 2013-6-29 13:09 | 显示全部楼层
比较容易犯的错误,也比较难发现的错误
baidudz 发表于 2013-6-30 12:39 | 显示全部楼层
yybj 发表于 2013-6-28 23:44
越界不越界自己控制

控制越界需要养成良好的编程习惯
vivilzb1985 发表于 2013-7-18 23:43 | 显示全部楼层
数组越界带来的问题是非常严重的,直接导致了你其他数组变量的数据都乱了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部