如果你想的int size
動態分配的數組,有兩種方式可以得到,在C:數組vs malloc?
int* array = new int [size]; //method 1
int* array2 = malloc (sizeof(int) * size); //method 2
什麼時候應該使用哪種方法?
如果你想的int size
動態分配的數組,有兩種方式可以得到,在C:數組vs malloc?
int* array = new int [size]; //method 1
int* array2 = malloc (sizeof(int) * size); //method 2
什麼時候應該使用哪種方法?
另一種選擇,如果陣列不會是大是分配它在堆棧上作爲VLA:
int array[size];
當變量離開範圍,其可能或可能這將自動釋放內存不是你想要的。如果您打算在其分配的功能之外使用該變量,請使用malloc
方式。
如果你在C,第二個。
如果您使用C++,如果可以的話,請使用std::vector<int>
;否則使用第一個(很少需要)。
你能再詳述一下嗎? – canhazbits
使用'new'之前,應該考慮智能指針('make_unique/shared')。只有當他們失敗時(他們是否曾經???)應該考慮手動管理內存。但是,當然,即使在智能指針之前,標準容器也覆蓋了大部分情況。 – syam
我爲什麼要用C中的第二個? – dfg
另一種選擇(尤其是當存儲器需要被歸零):
int *array3 = calloc(size, sizeof array3[0]);
這可以防止溢出(其必須在size * sizeof array[0]
手動進行檢查)。
選擇一種語言。這個問題對於當前的一組標籤來說很荒謬。 –
總是使用第二個..爲什麼這是一個困境..選擇第二個並堅持下去 – sukhvir
幾乎從不使用。 – chris