0
点赞
收藏
分享

微信扫一扫

d调用破坏有问题

Java旺 2022-05-25 阅读 70


import core.memory;
import core.stdc.stdlib : malloc, free;
import core.lifetime : emplace;

T NEW(T, Args...)(auto ref Args args) /*@nogc*/ if (is(T == class)) {
enum size = __traits(classInstanceSize, T);
void* mem = malloc(size);
scope(failure) free(mem);
return mem !is null ? emplace!T(mem[0..size], args) : null;
}
void FREE(T)(ref T obj) @nogc if (is(T == class)) {
auto mem = cast(void*) obj;
scope(exit) free(mem);
destroy(obj);//这里不行,总是说有问题.
obj = null;
}

extern(C++) class Foo {//加上这个extern(C++)同样如此.
~this() @nogc {}
}//仍有编译问题

void main() {
auto foo = NEW!Foo;
FREE(foo);
}



举报

相关推荐

0 条评论