d中这是内存安全吗
如下代码:import std.stdio:writeln;
struct S{
@disable this();
~this(){
writeln("dtor!");
}
}
void main(){
S s = void;
}
RazvanN:
过去出现过,人们同意,如果用void初化,则由你确保析构前对象有效.我不同意这一点;既然你绕过了构建,你也应该绕过析构,但是,这可以讨论.
当前你有简单用联技巧来绕过析构的方法.我赞成,对特定对象避免析构的dip.
Walter Bright:
上面代码应该有问题吗?用void初化表明由用户使用前正确初化.
@safe是关于内存安全的.示例代码确实是内存安全的.
UB不太对.这是关于内存安全.下例可说明:
import std.stdio;
@safe void main() {
int x = void;
writeln(x);
}
会打印垃圾,但不是不安全.
https://blog.51cto.com/u_4139404/4842829
页:
[1]