freeがちゃんとできていないからかなと思うのですが、一応確保したところは全部解放してるはずだし、どこがおかしいのかわかりません。
動的メモリの確保を最近理解したばっかりで無知ですが、よろしくお願いします。
#include<stdio.h>
#include<stdlib.h>
int **dmatrix(int nr, int nc) {
int **mat;
mat = (int**)malloc(nr*sizeof(int *));
if (mat == NULL)
puts("Failure!! (from (*dmatrix)[nr])");
else {
int i, j;
int *base = (int*)malloc(nr*nc*sizeof(int));
if (base == NULL)
puts("Failure!! (from dmatrix[nr][nc])");
else {
for (i=0; i < nr; i++)
mat[i] = base + i*nc;
}
free(base);
}
return(mat);
}
int *matrix(int n){
int *arr;
arr=(int*)malloc(n*sizeof(int));
if (arr==NULL)
puts("Failure!! (from(matrix)");
return(arr);
}
void sigma(int **a,int n,int *b){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
b[i]+=a[i][j];
}
}
}
int main(void){
int *b;
//char buf[40];
int **a;
int n=0;
int i,j;
//fgets(buf,sizeof(buf),stdin);
//sscanf(buf,"%d",&n);
scanf("%d",&n);
a=dmatrix(n,n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
//fgets(buf,sizeof(buf),stdin);
//sscanf(buf,"%d",&a[i][j]);
scanf("%d",&a[i][j]);
}
}
b=matrix(n);
sigma(a,n,b);
printf("b[0]=%d\n",b[0]);
free(b);
free(a);
return 0;
}