Valgrind内存泄漏指针

时间:2015-05-17 19:49:48

标签: c++ valgrind

我有这个函数,以扩展我在其他两个函数中使用的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;
}

0 个答案:

没有答案