偷越访问数组
越界访问数组为了使访问A[-1]的行为安全,可以这样做:int ncinnint *A new int[n]int *B new int[
越界访问数组
为了使访问A[-1]的行为安全,可以这样做:
int n;
cin>>n;
int *A = new int[n];
int *B = new int[n+1];
A = B +1;
A[-1] = 0;
然后初始化A数组,B数组在下面的程序中没有用到。
问题:为了使A[-1]安全,就必须开辟一个B的数组吗?有没有其他的方法?或者可以使B的数组开的小一点? 数组,?越界访问
[解决办法]int *A = new int[n+1]+1;
不就可以了???
A[-1]=0;
....
delete [](A+1);
PS:
你的这种方法,会导致内存泄漏,为A分配的内存;
没有指针持有,这段内存丢失了,无法释放内存了,这不就是典型的内存泄漏吗????
[解决办法]
int a[10];
int * const p = a + 1;
for(int i = -1; i < 9; ++i)
{
//p[-1], p[0], .... p[8]
p[i] = 0;
}