blinue 最近的时间轴更新
blinue

blinue

V2EX 第 347571 号会员,加入于 2018-09-06 12:22:56 +08:00
根据 blinue 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
blinue 最近回复了
42 天前
回复了 Betsy 创建的主题 C++ 求教个神奇的 C++ 打印问题
我在 godbolt 里复现这个问题: https://godbolt.org/z/h45896sM5

只会在 O1 优化下出现,是一个悬垂引用导致的巧合。

1. memo.GetReduceGroupId(group_id) 返回的临时的 std::optional<ReducedGroupId> 存储在 [rsp + 16] 到 [rsp + 24]。optional 本身共 9 个字节,前 8 个字节是 ReducedGroupId ,后跟一个 bool 。

2. reduced_group_id 为 .value() 返回的地址,即 rsp + 16 ,注意这是一个栈上的临时空间,reduced_group_id 为悬垂引用。后续用 rbx 存储 reduced_group_id 引用的地址。

3. tmp.push_back(4) 恰好将 4 ( 8 个字节)存储到 [rsp + 16],覆盖了 reduced_group_id 指向的内存。编译器认为这是安全的,因为临时的 std::optional<ReducedGroupId> 已经析构,这导致后续读取 reduced_group_id 的值为 4 。
44 天前
回复了 Betsy 创建的主题 C++ 求教个神奇的 C++ 打印问题
未定义行为就是编译器怎么做都可以,有一篇很好的博客 https://devblogs.microsoft.com/oldnewthing/20140627-00/?p=633
69 天前
回复了 sparks2 创建的主题 Arc 关于 Arc 浏览器 Windows 版的吐槽
在 AppContainer 里运行的应用不走系统代理。性能差和 WinAppSDK 有很大关系,Win11 里用 WinAppSDK 重写的应用性能都下降很多。
83 天前
回复了 tool2dx 创建的主题 编程 C++的 long 是一个很尴尬的存在。
@tool2dx #3 标准只要求 long 至少 32 位,long long 至少 64 位,具体多长是编译器决定的。要保证一致性最好用 int64_t
83 天前
回复了 tool2dx 创建的主题 编程 C++的 long 是一个很尴尬的存在。
需要 64 位用 int64_t 就好,现代 C++ 基本淘汰了 long 和 long long
93 天前
回复了 panlatent 创建的主题 分享创造 来推荐推荐自己的开源项目和经验吧
上面好多面向开发者的项目,我来一个开源软件:[Magpie]( https://github.com/Blinue/Magpie)

Windows 上的窗口全屏化工具,用来提高游戏的画质。最初只是自用的,现在基本在做我用不到的功能了。
我写自己的项目会花很多时间来优化和重构,和实现新功能一样重要。工作时屎山已经品尝够多了,在自己的项目里呼吸一下新鲜空气
Sublime Merge 用起来最舒服
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5070 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 01:15 · PVG 09:15 · LAX 18:15 · JFK 21:15
Developed with CodeLauncher
♥ Do have faith in what you're doing.