为什么或为什么不在C++中使用memset?

kir*_*off 3 c++ memory memory-management memset

我必须维护一个程序中有很多memset.在现代C++中使用memset是一个好习惯吗?

为什么不呢?

如果没有,memset应该更喜欢什么?

Nei*_*irk 7

90%的时间你应该使用std::fill而不是memset.这是因为它std::fill可以正确地使用类,并且在将非字节类型的数组设置为非零值时也可以.例如,您可以将整数数组memset设置为0,但不能将整数数组memset设置为0x12345678.随着std::fill即可.

好的编译器可以std::fill在适当的情况下优化到memset.在他们没有的情况下,任何性能影响都可以忽略不计.

std::fill当memset更快时使用并不危险.使用memset std::fill应该使用的地方是危险的.默认为std::fill.

同上memcpy和std::copy

  • 如果你downvote请留下评论解释原因.否则没人会学到任何东西. (2认同)
  • @Zboson 我不知道,我只是把它放在我的背面,以防有人想出一些奇怪的边缘情况,其中 memset 比填充更好。 (2认同)