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);
}

会打印垃圾,但不是不安全.

posted @   zjh6  阅读(16)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示