所以我正在创建两个不同的多维向量,如下所示
string **customdiceArray = new string*[crows];
for(unsigned int i = 0; i<crows;i++){
customdiceArray[i] = new string[ccolumns];
}
然而,他们给了我内存泄漏。对于两个向量,我执行下面的删除调用。我哪里错了?
//Deallocate create objects
delete diceArray;
diceArray = 0;
//set<string>* words = new set<string>;
delete words;
words = 0;
//string **customdiceArray = new string*[crows];
delete customdiceArray;
customdiceArray = 0;
答案 0 :(得分:1)
所以如果你想在这里使用删除一些例子:
对于一个变量
string *i = new string;
delete i;
对于数组(一维)
string *i = new string[10];
delete[] i;
对于数组(多维)
string **i = new *string[10]
for(int j=0; j<10;++j){
i[j] = new string[10];
}
for(int j=0; j<10;++j){
delete[] i[j];
}
delete[] i;
答案 1 :(得分:0)
为了避免内存泄漏并编写C ++本机代码,您还可以使用std :: vector而不是C数组,这需要更加谨慎和维护。
例如:
vector<vector<int> > matrix;
vector<int> cols;
cols.push_back(1);
cols.push_back(2);
cols.push_back(3);
matrix.push_back(cols);
matrix.push_back(cols);
for(int i=0; i<matrix.size(); i++)
for(int j=0; j<cols.size(); j++)
cout << matrix[i][j] << endl;
结果:
1
2
3
1
2
3