On Friday, 5 March 2021 at 21:24:08 UTC, tsbockman wrote:
On Friday, 5 March 2021 at 21:17:24 UTC, tsbockman wrote:
On Friday, 5 March 2021 at 21:02:08 UTC, H. S. Teoh wrote:
        class C {...}

        import core.memory : GC;
        C c = cast(C) GC.malloc(C.sizeof);
     ...
    ...
    import core.memory : GC;
    C c = cast(C) GC.malloc(C.sizeof);
    ...

Also, that's not the correct way to manually allocate a class on the heap. C.sizeof is the size of a reference to C, not an instance of C, and we need to blit and construct the instance before it is safe to use:

    import core.memory : GC;
    C c = cast(C) GC.malloc(__traits(classInstanceSize, C));
    import core.lifetime : emplace;
    emplace(c, anyConstructorArgsGoHere);
    ...

good catch, thanks

Reply via email to