Date: Wed, 2 Aug 2000 23:13:05 +0400 (MSD) From: .@babolo.ru To: "Daniel C. Sobral" <dcs@newsguy.com> Cc: chris@calldei.com, freebsd-hackers@FreeBSD.ORG Subject: Re: malloc to arrays? Message-ID: <200008021913.XAA00739@cicuta.babolo.ru> In-Reply-To: <39879ECA.61855D9D@newsguy.com> from "Daniel C. Sobral" at "Aug 2, 2000 01:08:42 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
> Chris Costello wrote:
> > On Wednesday, August 02, 2000, .@babolo.ru wrote:
> > > Sorry I have no other direction to ask this:
> > > I have declaration:
> > >
> > > u_int32_t *(tcpcash_addr[256]);
> > >
> > > and want malloc some memory for tcpcash_addr:
> > >
> > > tcpcash_addr = (typeof(tcpcash_addr))malloc(u_int32_t * 256 * n);
> > >
> > > and have an error:
> > >
> > > ra-sum.c:386: cast specifies array type
> > > *** Error code 1
> >
> > Try this:
> >
> > u_int32_t *tcphash_haddr;
> > tcphash_addr = malloc(sizeof(*tcphash_addr) * 256);
> >
> > You shouldn't be casting malloc and I don't see any reason
> > to use *(foo[nmemb]) syntax.
>
> u_int32_t **tcphash_haddr;
>
> From the code, it's a variable-sized array of fixed-sized arrays.
Yes, and whan I use u_int32_t *(tcpcash_addr[256]) declaration,
I can use tcpcash_addr[x][y], and I must use
tcpcash_addr[x * 256 + y] if declaration is u_int32_t *tcphash_haddr,
I cant use if u_int32_t **tcphash_haddr,
because of need of array of pointers in addition to array of arrays,
and the only clean but not nice way I know is
struct tcphash_haddr {u_int32_t tcpcash_addr[256];};
struct tcphash_haddr *tcphash_haddr;
but tcphash_haddr[x].tcpcash_addr[y] is not so clear
as tcpcash_addr[x][y]...
Is the reason to use *(foo[nmemb]) syntax clear enough?
And more, in the original code not malloc but mmap...
tcpcash_addr = (typeof(tcpcash_addr))mmap( NULL, ...
so using of pointers is dirty enougth.
and more, assign without a cast impossible:
ra-sum.c:385: incompatible types in assignment
And even
u_int32_t *(tcpcash_addr[256]);
tcpcash_addr = (void*)mmap( NULL, ...
does not translated
--
Александр А. Бабайлов mailto://babolo@links.ru/
http://links.ru/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200008021913.XAA00739>
