new類型
// 一維數組
int *data = int new[len];
// 釋放內存
delete []data;
data = nullptr;
// 二維數組
int **data = int new[row];
for(int i=0; i<row; i++)
{
data[i] = new int[col];
}
// 釋放內存
for(int i=0; i<row; i++)
{
delete []data[i];
data[i] = nullptr;
}
delete []data;
data = nullptr;
malloc類型
// 一維數組
int *data = (int*) malloc[sizeof(int*) * len];
// 釋放內存
free(data);
data = nullptr;
// 二維數組
int **data = (int**) malloc[sizeof(int*) * row];
for(int i=0; i<row; i++)
{
data[i] = (int*) malloc[sizeof(int*) * col];
}
// 釋放內存
for(int i=0; i<row; i++)
{
free(data[i]);
data[i] = nullptr;
}
free(data);
data = nullptr;
vector類型
vector<int> data;
// 釋放內存
if(!data.empty())
{
data.clear();
vector<int> tmp;
data.swap(tmp); // 進行交換
}
注:加大括號目的是執行完,程序自動析構。如果是指針類型也需要一個一個釋放。
Mat類型
Mat Img = Mat::zeros(rows, cols, CV_32FC1);
Img.release();