1
3
只要使用此API的代码只获得
另一个可能的考虑因素是是否有任何代码依赖于
|
2
4
像这样扩展结构可能是有意义的:
然后可以安全地将newt指针用作t指针;C标准保证结构的第一个元素之前没有填充。 |
3
2
如果T真的以疯狂和未知的方式被广泛使用,那么这样的变化很可能会破坏某些东西。在某个地方,将有一段代码具有局部t声明,而不是使用头文件,或者将“mystruct*”强制转换为“t*”,或者其他同样令人反感的代码。 |
4
1
是的-当您使用这样的不透明指针时,它与内容无关。只要您的用户只使用不透明指针,您就可以随意处理结构及其实现。 |
5
0
疯狂和未知是不好的。最好的办法是浏览struct t的代码库并检查它是如何使用的,用另一种方法来更改它,看看是否有什么东西中断了……如果代码只使用不透明指针,那么您应该在安全方面。如果代码访问成员,但没有做一些奇怪的事情,那么您也应该是安全的,完全重新编译。 如果它做了一些奇怪的事情,比如紧身衣的例子,即使是Jukka的小费也可能帮不上忙。代码可以使用sizeof的硬编码值在这些结构的数组中执行指针算术… |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
kernel · 打印结构数组内容时出错 2 年前 |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
Tor · 使用Box<None>值初始化struct 2 年前 |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |