[ILUG-BOM] Buggy C prog

Kunal Gangakhedkar kgangakhedkar@[EMAIL-PROTECTED]
Sat Sep 28 23:48:56 IST 2002


On Friday 27 September 2002 07:40 am, Nikhil Joshi wrote:
>
>       if ((*arg = (char *) malloc (30)) == NULL)
>
>         {
>           printf ("Error allocating memory \n");
>           exit (1);
>         }

Boy, you're not advancing the "arg" pointer....
so, it is something like 

arg[0] = (char *)malloc(30);

I guess, this is not what you want, right???
In this case, what you need to do is advance the arg pointer.
Something like

for( i =0 ; i < 4; i++)
{
	if((*(arg + i) = (char *)malloc(n * sizeof(char))) == NULL)
	{
		perror("Mem Allocation Error...\n");
		exit(1);
	}
}

I guess, in your earlier program, you'd done something like

for(i = 0; i < 4; i++)
	if((arg[i] = (char *)malloc(30)) == NULL)

I don't see any point why this should give you Segmentation fault.
It seems to work for me though....
It is exactly what the above code will do, using the offset alongwith 
the pointer.

But, if you want a simple and better way, I suggest you use C++.
The string class (which in fact is a typedef to the base_string<char>  
template) is simple to use. Also, it will handle the memory allocation 
problems internally. Refer to the documentation for more details.

-- 
Kunal Gangakhedkar
---------------------------
MCA Student @ VJTI

kunal at vjtimca.net
kgangakhedkar at softhome.net
kgangakhedkar at hotpop.com
---------------------------
Although golf was originally restricted to wealthy, overweight 
Protestants,
today it's open to anybody who owns hideous clothing.
		-- Dave Barry







More information about the Linuxers mailing list