kir*_*off 3 c++ memory memory-management memset
我必须维护一个程序中有很多memset.在现代C++中使用memset是一个好习惯吗?
为什么不呢?
如果没有,memset应该更喜欢什么?
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