c++ 用Valgrind检查时提示Memory Leaks

用Valgrind查内存问题
其中有一个变量是一个pointer的数组
对他重新赋值的时候会提示memory leaks

1.
int** m_data; // m_data内所有元素已经分配好空间并赋值 长度为len

void resize(){
    int** temp = new int* [10];
    for(...){temp[]...} //循环给temp分配空间并赋值
    for(int i = 0; i < len; i ++){ delete[] m_data[i]; }
    delete[] m_data;
    m_data = temp;
}

而如果我换另外一种写法就没有memory leaks

2.
void resize(){
    int** temp = m_data;
    m_data = new int* [10];
    for(...){m_data[]...} //循环给m_data分配空间并赋值
    for(int i = 0; i < len; i ++){ delete[] temp[i]; }
    delete[] temp;
}

m_data是成员变量并且在析构函数里delete了

想知道为什么第一种写法会memory leaks第二种不会

https://www.cnblogs.com/lanxuezaipiao/p/3604533.html