Re: freebsd: unix socket programmering

From: Michael Knudsen (none@e--molioner.dk.lh.bsd-dk.dk)
Date: Wed 09 Jul 2008 - 20:26:10 CEST


Date: Wed, 9 Jul 2008 20:26:10 +0200
From: Michael Knudsen <none@e--molioner.dk.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: freebsd: unix socket programmering

Quoting Mic J (michael.cognacc@gmail.com):
..]
> > On Sun, 4 May 2008 12:08:17 +0200
> > Michael Rasmussen <none@mir--datanom.net.lh.bsd-dk.dk> wrote:
> >> memset(&addr_u, 0, sizeof(struct sockaddr_un));
> >>
> > skal være: memset(&addr_u, 0, sizeof(addr_u))
> > Egentligt logisk nok i bagklogskabens klare lys:-)
>
> Hvorfor er det logisk, bør en size of struct (type) ikke være samme
> størrelse som
> en instans af typen, (optimering ?), ja jeg siger jo ikke det forkert :),
> kan bare ikke lige se det skulle gøre en forskel logisk. det skulle
> vel ikke give en forskel
> selvom der er en invalid værdi i sun_len?
> Så hvad sker der egentligt.
> Nogen der har en god forklaring?

Mit umiddelbare bud er, at han har aendret noget andet. (: Der er ikke
forskel.

Jeg bruger altid:

        struct tag *var;

        var = malloc(sizeof(*var));

Saa kan jeg nemlig aendre typen af var uden at skulle lave foelgerettelser.
Det er saa nemt at glemme at rette typen i allokeringen, og saa kan man
faa temmeligt besynderlige fejl.

> Måske man skulle kigge i hvad den laver i assembler på de to metoder.
> ehh gcc -S c.c
> Hvordan er det lige man laver en fil der mixer assembler og c kode..!?
> (note to self)

Jeg plejer at compile med -ggdb og saa bruge objdump -dlrS paa
objektfilen, men gcc kan sikkert godt goere det direkte.

-- 
No matter how fast light travels it finds the darkness has always got there
first, and is waiting for it.
-- (Terry Pratchett, Reaper Man)



This archive was generated by hypermail 2b30 : Thu 31 Jul 2008 - 23:00:01 CEST