【发布时间】:2014-05-15 08:16:08
【问题描述】:
我有一个创建二维数组并释放它的基本函数。但是当我使用泄漏检测器测试我的程序时,它会给出泄漏输出。
template <class T1>
T1**
CreateMatrix(int row ,int col)
{
int i;
T1** matrix;
matrix = (T1**) malloc(row*sizeof(T1*));
for (i=0; i<row; i++)
matrix[i]=(T1*) malloc(col*sizeof(T1));
return matrix;
}
template <class T1>
void FreeMatrix(int row,T1** matrix)
{
int i;
for (i=0; i<row; i++)
free(matrix[i]);
free(matrix);
}
int** my_matrix=CreateMatrix<int>(3,2);
FreeMatrix<int>(3,my_matrix);
【问题讨论】:
-
你为什么使用 malloc 而不是 new? stackoverflow.com/questions/184537/…
-
盯着你的代码看了一会儿,我觉得你的检漏仪有问题。
-
更好的是,使用像
std::vector这样的类。 -
如果您还发布了您从“泄漏检测器”(即内存分析器)收到的消息,将会很有帮助。
-
在 valgrind 下运行您的代码后,我几乎可以肯定您的检漏仪误报了泄漏。
标签: c++ memory memory-management memory-leaks