最早提出弱引用的是哪种语言

2023-10-28 16:10:38 +08:00
 James369

最近写 C 语言,发现其它高级语言中的弱引用真是好东西,有了它不会出现 C 中的悬挂指针问题。

不知道 C 语言如何实现类似效果。

2525 次点击
所在节点    程序员
10 条回复
James369
2023-10-28 17:36:19 +08:00
或者说,C 语言中如何优雅的编程,来尽量避免出现悬挂指针?
就是假设 外界用户的一个指针 p 指向了一个结构,当这个结构释放的时候,告之外界将指针 p 置为 NULL 也行
Aloento
2023-10-28 17:40:53 +08:00
你自己去 CPP 抄一份 weak_ptr 实现就行了
weeei
2023-10-28 17:48:09 +08:00
@Aloento 还要抄 shared_ptr 才能配套使用
weeei
2023-10-28 17:51:40 +08:00
纯 C 语言里没有 RAII 机制的,需要使用 gnu 语言扩展中的 __attribute__((cleanup (func))); 在超出作用域的时候能处理逻辑。
PTLin
2023-10-28 18:17:31 +08:00
包个结构,配合对应 api ,然后用这个替代指针
passive
2023-10-28 20:35:27 +08:00
这个年代写 C ,开 asan 是正确的姿势。
LokiSharp
2023-10-28 20:38:27 +08:00
只是 C 标准库不提供,完全可以自己实现一个
weeei
2023-10-28 21:56:43 +08:00
nuk
2023-10-28 22:20:43 +08:00
当然是加一套 gc 啦,https://github.com/ivmai/bdwgc
James369
2023-10-28 23:23:15 +08:00
@weeei 这个实现还挺优雅的 https://github.com/Snaipe/libcsptr

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/986256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX