引用计数的 shared_ptr 是胖指针,这与 C 的可以指针算数、可以随意强制类型转换的指针是不能随便兼容的。
指针内存安全的重难点是别名分析,不要求类型安全是不能做到准确的别名分析的。所以现代内存安全的语言一定要限制指针算数和指针类型转换,这才是问题解决之道。
靠额外簿记胖指针信息,可以费力解决 double free 的问题,传统 gc 都能做,但距离内存安全还远,意义不大。
【 在 hgoldfish 的大作中提到: 】
: 主要是 c 语言比较底层,所有没人这么搞。但不代表着这个思路不可行。
:
: golang 的指针就是实现为智能指针的吧。而不是简单的 int65 的变形。
: ...................
--
修改:milksea FROM 114.249.220.*
FROM 114.249.220.*