Fiddle
require 'fiddle/import'
S = Fiddle::Importer.struct(["int i"])
a = S.malloc
a.i = 10
b = a.clone
b.i = 20
p a.i # 20
p b.i # 20
Ruby-FFI
require 'ffi'
class S < FFI::Struct
layout :i, :int
end
a = S.new
a[:i] = 10
b = a.clone
b[:i] = 20
p a[:i] # 10
p b[:i] # 20