我终于决定好好学习C++
,我在一本增加数组大小的书中遇到了下面的代码。该函数接受一个指向具有其原始大小的数组的指针,并返回一个大小为两倍的新数组。
int *doubleArraySize(int *p_array, int *p_size) {
*p_size *= 2;
int *p_new_array = new int[*p_size];
for(int i = 0; i < *p_size; i++)
p_new_array[i] = p_array[i];
delete[] p_array;
return p_new_array;
}
当我们到达 for 循环时,值*p_size
已经翻了一番。这意味着(至少对我而言)当我们访问时,p_array[i]
我们最终会进入不属于的内存区域p_array
。这是一个问题吗?这段代码会崩溃吗?如果没有,我错过了什么?