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);
}
09-10
1280
博客
2409js,学习js1
09-20
296
09-20
55
09-20
28
09-18
133
09-16
192
博客
2409wtl,网浏包装
09-08
693
09-08
1027
博客
2409wtl,切换视图
09-07
779
09-07
1022
09-07
342
09-06
866
09-06
927
09-06
261
09-05
229
09-05
352
09-05
321
09-05
425
09-04
1217
09-02
443