我正在浏览一个博客,发现以下代码片段:
require 'fiddle'
str = 'water'.freeze
str.frozen? # true
memory_address = str.object_id * 2
Fiddle::Pointer.new(memory_address)[1] &= ~8
str.frozen? # false
谁能解释一下,我不明白下一行实际上是如何解冻字符串的。
Fiddle::Pointer.new(memory_address)[1] &= ~8