我只是想確定一下。用C++替換malloc/free /刪除
這是我的代碼
int * Image = (int *)malloc(sizeof(int) * m_Width/2 * m_Height);
free(Image);
,如果我想使用新的代替malloc和free,而不是刪除。 這就是我寫的
int* Image = new int[m_Width/2 * m_Height];
delete[] Image;
這是正確的嗎?
我只是想確定一下。用C++替換malloc/free /刪除
這是我的代碼
int * Image = (int *)malloc(sizeof(int) * m_Width/2 * m_Height);
free(Image);
,如果我想使用新的代替malloc和free,而不是刪除。 這就是我寫的
int* Image = new int[m_Width/2 * m_Height];
delete[] Image;
這是正確的嗎?
從技術上講,這是正確的。然而,這是C++我們談論和C++的方式動態地分配的陣列是使用std:vector
代替:
std::vector<int> Image(m_Width/2 * m_Height);
或者:
std::vector<int> Image;
Image.resize(m_Width/2 * m_Height);
存儲器將自動當釋放當它超出範圍時,std::vector
被破壞。
這是正確的。但是如果你想獲得一些額外的語義而沒有太多的OOP開銷,你可以使用unique_ptr:
unique_ptr<int[]> Image(new int[m_Width/2 * m_Height]);
// do something with Image...
Image.Reset(); // call it if you want to free memory manually,
// or just leave until Image is destroyed.
這的確是正確的。我不認爲這是值得回答的。 –
只是確保我將刪除問題 – Gilad
不要刪除它,這是任何其他人都有同樣問題的好例子。 – IllusiveBrian