>>224
 matalloc(&A,4,4); /* メモリ取得 */
...
 A.base = &a[0][0]; /* 代入 */
...
 mfree(&A);

って領域確保とポインタ(アドレス)と実体とゴッチャになってるから
/*代入*/で間違っている。アドレスを代入するのではなくポインタが指し示す
メモリ上に値を埋めていく作業が必要。