标题已经说明了这一点。
我已经尝试过:
new char[nSize];
但它可以返回未初始化的内存。
其中 calloc
确保零初始化。
我可以调用 memset 等 - 但没有更直接的方法吗?
最佳答案
What's the most suitable c++ replacement of calloc?
对于大多数用途,std::vector
。如果您打算表示字符串,则使用 std::string
。它将自动删除它分配的任何内存。
对于包含许多不相互连续的数组的数据结构,您可能希望避免 std::vector
的大小略大于指针,而可能选择唯一的指针:
auto ptr = std::make_unique<char[]>(nSize);
您也可以使用带有新表达式的值初始化。这就是 std::make_unique
内部所做的事情:
new char[nSize]();
但我不建议在没有 RAII 容器的情况下进行分配。
正如geza所述,calloc
可能会被优化(在某些系统上),以便在分配大块时可以省略将内存设置为零。如果此类优化适用于您的情况,并且具有显着的意义,那么在 C++ 中使用 std::calloc
可能会有争议。
关于c++ - calloc 最合适的 C++ 替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55620811/