在下面的循環中,我試圖複製存儲在voidPtr地址處的數據。這裏的數據已知是長度計數的整數數組。我讀過將這個數組轉換爲int,然後執行副本(如下所示)應該可以工作。複製存儲在虛數指針Int數組中的Int數組
int intArr[count];
for (int i = 0; i<count; i++){
intArr[i] = ((int*) voidPtr)[i];
}
但是,當我試圖通過int打印int數組時,我收到一個seg-fault。
for (int i = 0; i<count; i++){
printf("%d ", intArr[i]);
}
任何想法?
首先,你應該只是'memcpy(intArr,voidPtr,count * sizeof(int));'副本(它更簡單,更高效)。其次,你可以請張貼更多的代碼。你顯示的內容似乎並不包含特定的錯誤。 – 865719
正如@ 865719所提到的,您需要提供一個顯示問題的完整示例。如果你所有的假設都是正確的(你沒有提供代碼),上面的代碼就可以工作。 [Here](http://cpp.sh/8aqh)就是一個例子。您可能還想重新考慮您的設計,因爲使用'void *'來傳遞其他類型不是一個好的設計實踐,並且很容易讓您陷入困境。 – crayzeewulf
@ 865719,使用malloc和memcpy解決了這個問題。我假設我創建的容器大小不夠大。非常感謝這個建議,並且我會盡力在未來的帖子上更加透徹一點。 – mongolol