【发布时间】:2013-02-27 10:18:53
【问题描述】:
我正在使用 Valgrind 调试我的 c 程序。 我收到的错误是:
==2765== 8,000 bytes in 2 blocks are definitely lost in loss record 1 of 1
==2765== at 0x4C274A8: malloc (vg_replace_malloc.c:236)
==2765== by 0x404123: main (mycode.cpp:352)
这是第 352 行附近的代码:
int **matrix;
matrix = (int**)malloc(2*sizeof(int*));
for (i=0; i<2; i++){
matrix[i] = (int*)malloc(size*sizeof(int)); //line 352
}
for (i=0; i<2; i++){ //inizialization
for (k=0; k<size; k++)
matrix[i][k] = 0;
}
这是我为矩阵分配内存的方式。 这有什么问题?
更新: 在程序结束时,我使用了:
free(matrix);
【问题讨论】:
-
您发布的代码没有问题。错误出现在释放
matrix的代码中。您能否更新您的问题以显示这一点? -
我想我之前已经说过了,但我会再说一遍:please don't cast the return value of
malloc(), in C。 -
我按照 simonc 的要求更新了问题。谢谢放松:),我会仔细阅读你的帖子。