HackerTrans
TopNewTrendsCommentsPastAskShowJobs

jilller

no profile record

comments

jilller
·3 ปีที่แล้ว·discuss
>Is it? I thought that char-pointers-into-char-arrays are specifically allowed to alias with whatever type.

I think they mean something like this:

  char storage[1024];
  struct pool pool_of_foos = { storage, sizeof(storage) }; // use storage as my memory
  struct foo *p = pool_allocate(&pool_of_foos, sizeof(struct foo));
  // pool_allocate cannot be implemented in conforming C or C++.
  // i.e you cannot place a 'struct foo object' in the memory location containing 'char objects'

How can malloc() work then you might ask? Well it has defined semantics in the standard, so its essentially a magical special exception, you cannot write such a function yourself in standard C, you must use compiler extensions or assembly.

Which is quite insane that it has come to this, I doubt K&R had that as their intention for the language.