我只是想知道...阅读有关malloc和静态分配的内容。很明显,静态方式更快。但是这个怎么样:而不是做:
int *s = new int[100];
我会写:
int s[100];
然后使用:
std::fill_n(s, 100, 0);
它会更快吗?我的意思是,我有两个操作,而不仅仅是一个:
int s[100];
和std::fill_n(s, 100, 0);
而非int *s = new int[100];
答案 0 :(得分:2)
这两个表达式不等同:
一般来说,堆栈操作更快,因为它们是在硬件中实现的:本质上,分配部分是免费的。另一方面,new[]
和delete[]
的调用也经过了大量优化,因此在大多数情况下您会看到很小的差异。
如果您希望用零初始化new
数组,则需要在数组大小之后加上括号,如下所示:
int *s = new int[100]();
// ^^