我有这个函数,以扩展我在其他两个函数中使用的char **数组的大小,这就是我通过引用传递它的原因。我知道我应该在某个时候删除数组,因为它是在这个函数中动态分配的,但我不能删除它,直到我在我的代码中使用它之后。但是,valgrind仍然说在包含array = new char * [cap2]的行中肯定会丢失内存。我该如何删除?
void expand(int &size2, int &cap2, char **&array){
int i;
if(size2 ==1)
{
cap2 = size2;
cap2 = cap2*2;
array = new char*[cap2];
for(int n=0; n<cap2; n++)
{
array[n] = '\0';
}
}
else{
cap2 = cap2 *2;
char **temp;
temp = array;
array = new char*[cap2];
for(i =0; i<size2 ; ++i)
{
array[i] = temp[i];
}
for(int k = size2; k<cap2; k++)
{
array[k] = '\0';
}
}
return;
}