重复定义变量是否会增加内存?

时间:2017-11-29 04:23:50

标签: c++ performance variables memory-management initialization

例如,如果我有一个循环

for(int i = 0; i < N; i++) {
    int a, b, c, d, e;
    cin >> a >> b >> c >> d >> e;
    foo(a, b, c, d, e);
}

int a, b, c, d, e;
for(int i = 0; i < N; i++) {
    cin >> a >> b >> c >> d >> e;
    foo(a, b, c, d, e);
}

哪一个应该更快?在第一种情况下,我在for循环中定义了五个变量,在第二种情况下,我在外面定义它。

我看过那些谈论&#34;更快的帖子&#34;例如Difference between declaring variables before or in loop?,但我不确定哪一个占用的内存较少。

我并不十分关心复杂性,而是关注程序中使用的内存量。

显然,在这种情况下,它并不重要,但如果我有一个多维for循环并且我必须定义变量数百万次呢?或者,如果我多次定义一个包含许多元素的大型矢量会怎么样?

如果这个问题非常简单,我很抱歉,因为我是c ++的新手。任何帮助将不胜感激。谢谢你们。

1 个答案:

答案 0 :(得分:0)

不,每次循环迭代都将使用相同的内存。对于原始类型(例如int),如果你不初始化它们,你甚至不会遭受这种惩罚。如果您使用需要初始化的类型执行此操作,则第二个可能会更快(尽管如果您使用这样的类型,无论它是否在循环内部,可能取决于您对实例执行的操作)。