let s = readLine()! let a = (0..<2).map(s.dropFirst).count
を実行して 11111111111111111
など 15 or 16 文字以上の文字列を標準入力として与えると -O
または -Ounchecked
時に実行時エラーになるそうです。気持ち悪い・・・。 https://twitter.com/_kebo/status/1357011619440599044 s.dropFirst
を変数に束縛するのでも再現しなくなるみたいですし、{ s.dropFirst($0) }
のようにクロージャにしても再現しなくなりますし、あとは (ちゃんと記録してませんでしたが) 形を変えて行った時にどこかで二重解放の実行時エラーが出ていたので、s
が解放されちゃいけないタイミングで解放されているのかなぁという気がしてます。 かといって withExtendedLifetime
で s
のライフタイムを伸ばしても変わらなかったので、何処かの最適化フェーズに問題があったのではと睨んでます。