Richard B. Kreckel writes:
Dear Marko,
Marko Riedel wrote:
Someone hands me a chunk of memory through a void pointer, like so:
(void *)ptr.
I want the memory pointed to by "ptr" to hold a newly initialized set of GiNaC expressions. How do I do this? How do I find out the number of bytes I will need? At some point in the future, someone will hand me that same pointer and I will want to free the set of expressions that it holds. Again, how do I do this?
Same as before. Don't let yourself be fooled by a funny long type name instead of a crisp "mystruct".
I suppose that should work (I haven't actually tested it):
typedef std::set<GiNaC::ex, GiNaC::ex_is_less> myset; // shorthand myset* inst; inst = (myset*)malloc(sizeof(myset)); // or get inst from elsewhere new(inst) myset; // do stuff to *inst here... inst->~myset(); delete inst;
Okay, one last remark: the malloc should be matched up with a free, right? Giving the sequence inst = (myset*)malloc(sizeof(myset)); // or get inst from elsewhere new(inst) myset; // do stuff to *inst here... inst->~myset(); free(inst); Best regards, Marko +-------------------------------------------------------------+ | Marko Riedel, EDV Neue Arbeit gGmbH, mriedel@lsi.upc.edu | | http://www.geocities.com/markoriedelde/index.html | +-------------------------------------------------------------+