0
gcc顯示0錯誤,但valgrind顯示內存泄漏,我不能執行我的程序,因爲分段錯誤(核心轉儲)的任何建議嗎? 我單獨檢查了分配情況,其精細的valgrind顯示0內存泄漏。文件操作的某處存在問題,但無法找到它。泄漏的內存,分段錯誤,C
#include <stdio.h>
#include <stdlib.h>
int* arrsize(FILE *plik)
{
if (plik == NULL) {
printf("Error: file pointer is null.");
return 0;
}
int* size;
fscanf(plik, "%d", &size);
return size;
}
int main()
{
int i = 0, j = 0, k = 0, a = 0;
FILE *fp;
if ((fp = fopen("matrix.txt", "r")) == NULL)
{
printf("Error: file pointer is null.\n");
return 1;
}
int size = arrsize(fp);
printf("Array size is %d x %d ", size, size);
double **arr = (double **)malloc(size * sizeof(double *));
for (i; i < size; i++)
arr[i] = (double *)malloc(size * sizeof(double));
for (j; j < size; j++) {
fscanf(fp, "%d", &arr[i][j]);
}
for (i; i < size; i++)
{
for (j = 0; j < size; j++)
{
printf("%lf\n", &arr[i][j]);
}
}
for (k; k < size; k++) {
free(arr[k]);
}
free(arr);
fclose(fp);
return 0;
}
使用調試器。或者製作[mcve]來演示這個問題。至少,解釋一下你的程序應該做什麼。 –
如果valgrind報告泄漏,則提交其報告的相關部分。 –
然而,乍一看,爲什麼你的'arrsize()'函數通過'scanf'指令爲帶符號的十進制整數讀取一個指針值?你確定你不是指它讀取並返回一個'int',而是? –