For some reason, the following code doesn't work: #include<stdio.h> #include<stdlib.h> #include<math.h>
/* float determinant(float *a, int n) {{{1 */ float determinant(float *a, int n) { float *b, det=0; if(n<2) return 0; if(n==2) det=( (*a)*(*(a+3)) - (*(a+1))*(*(a+2))); else { b=malloc((n-1)*(n-1)*sizeof(float)); int i,j,k,m=0,l=0; for(i=0;i<n;i++) { for(j=1;j<n;j++) for(k=0;k<n;k++) if(k!=i) { *(b + (n-1)*l + m)= *(a + n*j+ k); m++; l+=m/(n-1); m%=(n-1); } det+=(*(a+i))*determinant(b, n-1)*pow(-1,i); } free(b); } return det; } /* 1}}} */ int main() { float *a, det; int n,i,j; printf("Enter the no. of rows\n# "); scanf("%d", &n); printf("\n\n"); a=malloc(n*n*sizeof(float)); for(i=0;i<n;i++) for(j=0;j<n;j++) { printf("Enter element (%d,%d)# ", (i+1), (j+1)); scanf("%f", (a + i*n + j)); } det=determinant(a, n); free(a); printf("\n\nThe determinant is: %f\n\n", det); return 0; } Any help is appreciated. Here is the error: *** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0000000000601040 *** ======= Backtrace: ========= /lib/libc.so.6[0x2ab41ff97b23] /lib/libc.so.6(cfree+0x8c)[0x2ab41ff9b26c] ./a.out[0x400877] ./a.out[0x40095a] /lib/libc.so.6(__libc_start_main+0xf4)[0x2ab41ff458e4] ./a.out[0x4005e9] ======= Memory map: ======== 00400000-00401000 r-xp 00000000 08:04 4014120 /home/aneeshm/work/se/pl-ass/mat/a.out 00600000-00601000 rw-p 00000000 08:04 4014120 /home/aneeshm/work/se/pl-ass/mat/a.out 00601000-00622000 rw-p 00601000 00:00 0 [heap] 2ab41fa89000-2ab41faa5000 r-xp 00000000 08:04 8880137 /lib/ld-2.5.so 2ab41faa5000-2ab41faaa000 rw-p 2ab41faa5000 00:00 0 2ab41fca4000-2ab41fca6000 rw-p 0001b000 08:04 8880137 /lib/ld-2.5.so 2ab41fca6000-2ab41fd27000 r-xp 00000000 08:04 8912908 /lib/libm-2.5.so 2ab41fd27000-2ab41ff26000 ---p 00081000 08:04 8912908 /lib/libm-2.5.so 2ab41ff26000-2ab41ff28000 rw-p 00080000 08:04 8912908 /lib/libm-2.5.so 2ab41ff28000-2ab42006f000 r-xp 00000000 08:04 8880190 /lib/libc-2.5.so 2ab42006f000-2ab42026f000 ---p 00147000 08:04 8880190 /lib/libc-2.5.so 2ab42026f000-2ab420272000 r--p 00147000 08:04 8880190 /lib/libc-2.5.so 2ab420272000-2ab420274000 rw-p 0014a000 08:04 8880190 /lib/libc-2.5.so 2ab420274000-2ab42027a000 rw-p 2ab420274000 00:00 0 2ab42027a000-2ab420287000 r-xp 00000000 08:04 8880139 /lib/libgcc_s.so.1 2ab420287000-2ab420487000 ---p 0000d000 08:04 8880139 /lib/libgcc_s.so.1 2ab420487000-2ab420488000 rw-p 0000d000 08:04 8880139 /lib/libgcc_s.so.1 2ab424000000-2ab424021000 rw-p 2ab424000000 00:00 0 2ab424021000-2ab428000000 ---p 2ab424021000 00:00 0 7fff8b00c000-7fff8b021000 rw-p 7fff8b00c000 00:00 0 [stack] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vdso] Aborted (core dumped) -- ______________________________________________________________________ Pune GNU/Linux Users Group Mailing List: (plug-mail@plug.org.in) List Information: http://plug.org.in/cgi-bin/mailman/listinfo/plug-mail Send 'help' to [EMAIL PROTECTED] for mailing instructions.