将一个数组的内容复制到另一个数组会导致内存泄漏

ldo*_*dog 1 c++ memory memory-leaks

此代码是否会导致内存泄漏:

int main(){

   int * a = new int[10];
   int * b  = new int[10];
   for(int i = 0 ; i < 10; i++)
   {
       a[i] = 1;
       b[i] = 1;
   }

   for(int i = 0 ; i < 10; i++)
   {
       a[i] = b[i]; //each a[i] is allocated 4 bytes on heap
                    //when we copy b[i] into a[i] do we loose 
                    //the reference to a[i] (hence a leak), 
                    //and replace that reference
                    //with a reference to a new value?
   }

   delete[] a;
   delete[] b;


}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 15

不,那里没有泄漏.你只是在数组中复制值.把这些阵列想象成一个更衣室里的两个储物柜 - 你只是把一个储物柜中的东西复制到另一个储物柜的储物柜中; 储物柜本身就在它的位置.

  • +1,主要是用答案开始你的答案;-) (4认同)

Jes*_*der 5

[基于编辑]不,没有泄漏 - 你只是在复制值,而不是指针.像a[i]手段一样的表达*(a + i); 你正在查看(或分配)内存位置的值,而不是弄乱内存本身.