typedef struct
{
long x;
long y;
} TASKS1;TASKS1 *myTask=new TASKS1[100];
TASKS1 *mytem=myTask;for (i=0;i<100;i++)
{
mytem[i].x=i;
mytem[i].y=99-i;
mytem++;
};
delete [] myTask; //删除数组时出错,要是将i<100改为i<50没问题,连51都不行,真不知道怎么搞的。
{
long x;
long y;
} TASKS1;TASKS1 *myTask=new TASKS1[100];
TASKS1 *mytem=myTask;for (i=0;i<100;i++)
{
mytem[i].x=i;
mytem[i].y=99-i;
mytem++;
};
delete [] myTask; //删除数组时出错,要是将i<100改为i<50没问题,连51都不行,真不知道怎么搞的。
在这个循环中,不应该有这条命令。如果有这条命令,指针早已越界,结果为不可知。
当i=0时,mytem指向a,修改a处的数据!
当i=1时,mytem指向(a+8),修改(a+8)+8*i处的数据!(因为mytem++)
...当i=50时,mytem指向(a+8*50),mytem[50]指向a+8*50+8*50,此时修改数据就会出现越界!
{
long x;
long y;
} TASKS1;TASKS1 *myTask=new TASKS1[100];
for (i=0;i<100;i++)
{
myTask[i].x=i;
myTask[i].y=99-i;
};
delete [] myTask
正确的改变,谢谢大家