You might want to try the following:

limit

This will show you the stacksize limit (I believe 1024 KB?)

Execute the following command

unlimit stacksize

This should increase the stacksize and make the program work. The second
thing is I agree with the fact the such huge static allocation shouldnt be
done and it would be better to allocate this chunk dynamically.

Regards,
Shachin

On Sun, Jul 3, 2011 at 9:26 PM, Vishal Thanki <vishaltha...@gmail.com>wrote:

> Don't allocate too much static memory in stack, it will cause
> troubles. You are doing int[2000][2000], i.e. 2000*2000*4 bytes of
> memory in stack. Use dynamic memory allocation for such large chunk. I
> modified your code as below and it doesn't give seg fault.
> #include<stdio.h>
> #include <malloc.h>
> #include<string.h>
> #define MAX 2000
> using namespace std;
>
> int minimum(int a,int b,int c)
> {
>        if(a<b && a<c) return a;
>        if(b<c) return b;
>        return c;
> }
>
> int LevenshteinDistance(char *a, char *b)
> {
>         int **d;
>         int m=0,n=0,i,j;
>        char s[MAX]="0";
>        char t[MAX]="0";
>         d = (int **)malloc(MAX*sizeof(int));
>        for (i=0;i<MAX;i++)
>                d[i] = (int *)malloc(MAX*sizeof(int));
>         strcat(s,a);
>        strcat(t,b);
>        m=strlen(s);
>        n=strlen(t);
>        printf("%s%s",s,t);
>        for(i=0;i<=m;i++) d[i][0]=i ;
>        for(j=0;j<=n;j++) d[0][j]=j;
>
>        for(j=1;j<=n;j++)
>        {
>                for(i=1;i<=m;i++)
>                {
>                        if (s[i] == t[j])
>                                d[i][j]=d[i-1][j-1];
>                        else
>                                d[i][j]=minimum(d[i-1][j] +
> (s[i]==t[i]?0:1),d[i][j-1] +
> 1,d[i-1][j-1] + 1 );
>                }
>
>        }
>         //TODO: Free "d"
>         return d[m][n];
> }
>
>
> int main()
> {
>        int t,ed;
>        char s1[MAX],t1[MAX];
>        scanf("%d",&t);
>        while( t--)
>        {
>                scanf("%s%s",s1,t1);
>                //cout<<s1<<t1<<endl;
>                ed=LevenshteinDistance(s1,t1);
>                printf("%d\n",ed);
>        }
>
>        return 0;
> }
>
>
> On Sun, Jul 3, 2011 at 9:08 PM, HARSH PAHUJA <hpahuja.mn...@gmail.com>
> wrote:
> >
> >
> > ---------- Forwarded message ----------
> > From: HARSH PAHUJA <hpahuja.mn...@gmail.com>
> > Date: Sun, Jul 3, 2011 at 8:37 AM
> > Subject: anu_test Segmentation fault
> > To: anutest...@googlegroups.com
> >
> >
> > http://www.ideone.com/QuMcn
> > plzz help.........
> > y the above program is giving seg fault
> >
> > #include<stdio.h>
> > #include<string.h>
> > #define MAX 2000
> > //using namespace std;
> > int minimum(int a,int b,int c)
> > {
> > if(a<b && a<c) return a;
> > if(b<c) return b;
> > return c;
> > }
> > int LevenshteinDistance(char a[], char b[])
> > {
> > int d[2000][2000]={0};
> > int m=0,n=0,i,j;
> > char s[MAX]="0";
> > char t[MAX]="0";
> > strcat(s,a);
> > strcat(t,b);
> > m=strlen(s);
> > n=strlen(t);
> > printf("%s%s",s,t);
> > for(i=0;i<=m;i++) d[i][0]=i ;
> > for(j=0;j<=n;j++) d[0][j]=j;
> > for(j=1;j<=n;j++)
> > {
> > for(i=1;i<=m;i++)
> > {
> > if (s[i] == t[j])
> > d[i][j]=d[i-1][j-1];
> > else
> > d[i][j]=minimum(d[i-1][j] + (s[i]==t[i]?0:1),d[i][j-1] + 1,d[i-1][j-1] +
> 1
> > );
> > }
> > }
> > return d[m][n];
> > }
> >
> > int main()
> > {
> > int t,ed;
> > char s1[MAX],t1[MAX];
> > scanf("%d",&t);
> > while( t--)
> > {
> > scanf("%s%s",s1,t1);
> > //cout<<s1<<t1<<endl;
> > ed=LevenshteinDistance(s1,t1);
> > printf("%d\n",ed);
> > }
> > return 0;
> > }
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "anu testing" group.
> > To post to this group, send email to anutest...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > anutesting+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> > http://groups.google.com/group/anutesting?hl=en.
> >
> >
> >
> > --
> > HARSHIT PAHUJA
> > M.N.N.I.T.
> > ALLAHABAD
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Algorithm Geeks" group.
> > To post to this group, send email to algogeeks@googlegroups.com.
> > To unsubscribe from this group, send email to
> > algogeeks+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> > http://groups.google.com/group/algogeeks?hl=en.
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to