今天遇到了一个动态数组越界bug。感觉很有趣,需要记记录一下。
一开始,代码是这个的:
#define LENGTH
...
int P[LENGTH];
...
memcpy(p,P,sizeof(P));
能正常运行,后来,我将P改为了动态数组,就变成了这样:
...
int *P = new int[length];
...
memcpy(p,P,sizeof(P));
然后运行过程中就崩溃了,一开始觉得这个错误莫名其妙。后来才发现问题所在。现在P内的数据不一定是连续的。具体可以看
所以,只要修改一下,不要使用memcpy就行了
...
int *P = new int[length];
...
for(int i =0;i<lenght];i++){
p[i]=P[i];
}