2011-04-13 146 views
1

所以我已經能夠學習擴大一個數組,但不知道我怎麼會去將元素添加到擴展的空間,這裏是我到目前爲止所。初始化擴展數組元素

int *expand(int *arr, int size) 
{ 
    int *newArray; 


    newArray = new int[size * 2]; 
    memcpy(newArray, arr, size * sizeof(int)); 
    for (int index = 5; index < size; index++) 
     newArray[index] = 0; 
    return newArray; 

} 

回答

2

我想你可能在你的代碼中有一個錯誤。 newArray是大小「的大小* 2」,但你初始化元素只,直到「大小」。

試試這個:

newArray = new int[size * 2]; 
memcpy(newArray, arr, size * sizeof(int)); 
for (int index = size; index < (size*2); index++) 
    newArray[index] = 0; 
return newArray; 

這應該在新空間中的所有元素初始化爲0。

+0

所以我想這個代碼一些其他的事情,當我清點我沒有看到的元素... – Shimar 2011-04-13 06:45:18

+0

剛試過,我建議的代碼,它工作正常,與元素展示了內部和外部的功能。不確定問題可能是什麼。 – 2011-04-13 07:13:55

+0

@Shamir:這也是值得指出的是,該擴展功能分配內存(newArray),而不是釋放源內存(ARR),所以有一個很好的機會,這將導致內存泄漏。它通常是一個好主意,讓內存分配/在同一水平釋放,這樣很明顯這裏進行清理的責任所在。 – forsvarir 2011-04-27 13:59:04