最近写 C 语言,发现其它高级语言中的弱引用真是好东西,有了它不会出现 C 中的悬挂指针问题。
不知道 C 语言如何实现类似效果。
1
James369 OP 或者说,C 语言中如何优雅的编程,来尽量避免出现悬挂指针?
就是假设 外界用户的一个指针 p 指向了一个结构,当这个结构释放的时候,告之外界将指针 p 置为 NULL 也行 |
2
Aloento 2023-10-28 17:40:53 +08:00
你自己去 CPP 抄一份 weak_ptr 实现就行了
|
4
weeei 2023-10-28 17:51:40 +08:00 1
纯 C 语言里没有 RAII 机制的,需要使用 gnu 语言扩展中的 __attribute__((cleanup (func))); 在超出作用域的时候能处理逻辑。
|
5
PTLin 2023-10-28 18:17:31 +08:00
包个结构,配合对应 api ,然后用这个替代指针
|
6
passive 2023-10-28 20:35:27 +08:00 via Android 2
这个年代写 C ,开 asan 是正确的姿势。
|
7
LokiSharp 2023-10-28 20:38:27 +08:00 via iPhone
只是 C 标准库不提供,完全可以自己实现一个
|
8
weeei 2023-10-28 21:56:43 +08:00
|
9
nuk 2023-10-28 22:20:43 +08:00
当然是加一套 gc 啦,https://github.com/ivmai/bdwgc
|
10
James369 OP @weeei 这个实现还挺优雅的 https://github.com/Snaipe/libcsptr
|