c++ - C++ 程序员应该避免 memset 吗?

标签 c++ initialization memset

听说c++程序员应该避免memset,

class ArrInit {
    //! int a[1024] = { 0 };
    int a[1024];
public:
    ArrInit() {  memset(a, 0, 1024 * sizeof(int)); }
};

所以考虑到上面的代码,如果你不使用 memset,你怎么能让一个 [1..1024] 填充零?C++ 中的 memset 有什么问题?

谢谢。

最佳答案

在 C++ 中,std::fillstd::fill_n 可能是更好的选择,因为它是通用的,因此可以对对象和 POD 进行操作。但是,memset 对原始字节序列进行操作,因此不应用于初始化非 POD。无论如何,如果类型是 POD,std::fill 的优化实现可以在内部使用特化来调用 memset

关于c++ - C++ 程序员应该避免 memset 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975916/

相关文章:

c++ - 视觉 C++ 2008 : Unable to set win64 as the active build configuration for project

c++ - 将变量初始化为包含派生类的 vector 中的对象

c++ - 在 C++ 中的类初始化程序中初始化 const 数组

c++ - 该片段在 Coliru 中编译时带有警告,但在 Ideone 中编译正常。哪一个是正确的?

c++ - lambdas 的调用操作符是否需要链接?

c++ - bad_variant_access 不起作用

c++ - 当静态或动态初始化时

c - memset 没有设置 num 个字节?

c++ - 如何将巨大的头部分配数组设置为特定的 float C++

c - C 中的 memset() 未初始化为 const double;