我遇到了一個奇怪的錯誤在此代碼:爲什麼memcpy會改變原始數組的最後一個元素?
int *a = (int*) malloc(N*sizeof(int)); // allocate array
int i;
for (i=2; i<=N; i++)
{
a[i] = i;
}
int *b = (int*) malloc(N*sizeof(int));
memcpy(b, a, N*sizeof(b));
如果我打印出數組,輸出= 2,3,...,19 0
鑑於預期的輸出應該是2,3,...,19,20。
將數組複製到b奇怪地影響了最後一個元素。
與您的問題無關:不確定您應該在最後一行使用'N * sizeof(b)'。 'sizeof(b)'會給你一個int指針的大小,而你想要一個int的大小。 –
我期待'BAD_ACCESS'因爲'i <= N' – 2017-04-17 00:09:39
如果我使用sizeof(b),我會得到錯誤。如果使用sizeof(int),輸出仍然相同 –