用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第二种不会