On Sep 27, 2002 at 07:40, Nikhil Joshi wrote:

>thx guys 4 the suggestions.
>i've added the following code :
>But still i get the same error (Segmentation Fault)
>Also curious:
>How come the program runs perfectly in DOS without allocating memory ?

DOS ... I'm not sure, but I bet it has something to do with the real
memory model. Either that or the Turbo C (what're you using?) compiler
does the mallocing.


>        /*
>         Now Allocate memory for arg[4]
>         I dunno why the following doesn't work:
>
>         if ((arg = (char *) malloc (30)) == NULL)

See your declaration, you have 

char *arg[4];

Now I'm not quite sure if this is an array of pointers (I think it
is), or a pointer to an array, but you have to probably do:

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


>         Compiler gives the error:
>         incompatible types in assignment

Naturally, you are assigning char * (the cast) to char ** (the array).

>         Is there some other method to allocate memory to array of
>         pointers?

Yes.

>      */
>
>      if ((*arg = (char *) malloc (30)) == NULL)

And here you're mallocing 30 bytes (you should use sizeof(char) to be
completely safe, but perhaps ANSI C says that a char is always 1
byte) to arg[][].

>I know this is not the right place to discuss C programming but guys pls
>bear with me ...

It's ok. Once you understand malloc() you'll understand pointers
perfectly. I know I didn't get pointers until I understood malloc().  
Actually, I grokked both at the same time. I'm now writing a program
involving several structs, a call to select, a couple of calls to
gettimeofday() (see the manpage), and at least 2 linked lists
::counts: msgid... the packet queue...:: yep, 2.

Okay, so it's not complicated. But have n such programs fork()ed off
anotyher one, then initialised from the original based on a text .init
file, and then have them do P2P networking, all in 2 weeks....

Yes, I've got C programming on the brain now.

While we're at it, do sendto() and recvfrom() send and receive a full
packet, assuming it's SOCK_DGRAM (UDP)?

-- 
Satya. <URL:http://satya.virtualave.net/>
Standards are wonderful!  So many to pick from!


_______________________________________________
http://mm.ilug-bom.org.in/mailman/listinfo/linuxers

Reply via email to