在我的代码中,我定义了一个数组:
std::vector< std::pair<int,int> > *line_sep=new std::vector< std::pair<int,int> > [16];
在我的测试中,当我使用delete []line_sep;
时,我发现我的计算机内存使用率正在缓慢上升。
我只是想释放line_sep内存。
16对矢量! EXP
std::vector< std::pair<int,int> > *line_sep=new std::vector< std::pair<int,int> > [16];
for(int i=0;i<16;i++){
for(int j=0;j<1700;j++){
if(....)line_sep[i].push_back({Begin,End});
}
}
fun(line_sep);
delete []line_sep;
答案 0 :(得分:2)
是的,您可以使用delete[] line_sep;
来释放它。您使用new[]
分配的任何内容都必须使用delete[]
释放。
但是,首选使用另一个std::vector
而不是使用原始指针:
typedef std::pair<int, int> IntPair;
typedef std::vector<IntPair> IntPairVec;
std::vector<IntPairVec> line_sep(16);
for(int i = 0; i < 16; ++i)
{
for(int j = 0; j <1700; ++j)
{
if (....)
line_sep[i].push_back(std::make_pair(Begin, End));
}
}
fun(&line_sep[0]);
或者,在C ++ 11及更高版本中,std::unique_ptr
也可以工作:
using IntPair = std::pair<int,int>;
using IntPairVec = std::vector<IntPair>;
std::unique_ptr<IntPairVec[]> line_sep(new IntPairVec[16]);
for(int i = 0; i < 16; ++i)
{
for(int j = 0; j <1700; ++j)
{
if (....)
line_sep[i].push_back({Begin, End});
}
}
fun(line_sep.get());