[comp.lang.c] Mallocking

djones@megatest.UUCP (Dave Jones) (10/13/89)

From article <8247@medusa.cs.purdue.edu>, by bouma@cs.purdue.EDU (William J. Bouma):
> 
>     I need a list of pointers to functions to be malloced.

It's spelled "mallocked", not "malloced". Like pinic/picnicked, dontchaknow.

> What is the syntax?
> I declared this thing to hold it:
> 
>          int (**f)();
> 
>     And then I tried mallocing some space for it

"mallocking".

>  like this:
>
>          f = (int (**)()) malloc(n * sizof(*f));
> 

Looks right to me, except that you misspelled sizeof. (Also be
be sure you declare malloc correctly, as returning a generic pointer.)
There is also some question as to whether it is morally correct to use
the expression "*f" at a point in the program where f can not be pointing to
anything. But then again, sizeof is not a runtime function, it is
a compile-time calculation, so what does it matter? The comp.religion.police
can work out the details. Be sure not to keep me informed. Thank you very
much.

>     When the compiler hits that line I get this:
> 
>         illegal lhs of assignment operator
>         unacceptable operand of &
>         warning: illegal pointer/integer combination, op =
>         cannot recover from earlier errors: goodbye!
> 


I think your compiler is broke. You can probably get around it
with typedefs.

Try this:

   extern void *malloc();
   typedef int (**func_ptr_ptr)();

   proc(n)
   {
      func_ptr_ptr f = (func_ptr_ptr)malloc(n * sizeof(*f));
   }