出于大多数实际目的,memset_s()和其他_s“安全”功能仅由Microsoft在Windows上实现。因此,memset_s()几乎肯定不能在Linux内核中工作。(话虽如此,但有趣的是,它曾经奏效。 在微软之外实现这些功能有相当大的阻力。然而,C23增加了函数memset_explicit(),它应该保证内存被设置-编译器不应该优化它。例如,这对于清除内存中的密码很有价值。memset_s()的规范也需要此属性。 有关附录K函数的大量信息,请参见Do you use the TR-24731 'safe' functions?。
2条答案
按热度按时间zqdjd7g91#
出于大多数实际目的,
memset_s()
和其他_s
“安全”功能仅由Microsoft在Windows上实现。因此,memset_s()
几乎肯定不能在Linux内核中工作。(话虽如此,但有趣的是,它曾经奏效。在微软之外实现这些功能有相当大的阻力。然而,C23增加了函数
memset_explicit()
,它应该保证内存被设置-编译器不应该优化它。例如,这对于清除内存中的密码很有价值。memset_s()
的规范也需要此属性。有关附录K函数的大量信息,请参见Do you use the TR-24731 'safe' functions?。
50few1ms2#
memset_s
和朋友可以通过safec library获得。请注意,在本页的中间部分有关于在Linux内核模块中使用此方法的特殊说明。