do for 循环完成后释放内存

Pix*_*ras 1 c c++ for-loop memory-management

假设您编写了一个 for 循环:

for (int i = 0; i < 10; i++)
   for (int j = 0; j < 10; j++)
Run Code Online (Sandbox Code Playgroud)

for 循环是否创建了 10 个不同的j变量,并且在完成循环后它是否i释放j

我见过很多人这样做:

int i, j, k

for (i = 0; i < 10; i++)
   for (j = 0; j < 10; j++)
//..All The Loops..//
Run Code Online (Sandbox Code Playgroud)

在所有循环之前声明变量有什么好处i j k,还是只是个人喜好?

Rem*_*eau 5

所有相关变量均在自动存储中创建。当它们超出范围时就会被摧毁。这两个示例只是在不同的作用域中声明变量。

在第一个示例中,i作用域为外循环,含义i仅在循环运行时存在。它在循环开始时创建,在循环结束时销毁:

for (int i = 0; i < 10; i++) { <- created here
    <statements>
} <- destroyed here
Run Code Online (Sandbox Code Playgroud)

j与内循环相同:

for (int i = 0; i < 10; i++) { <- i created here
    for (int j = 0; j < 10; j++) { <- j created here
       <statements>
    } <- j destroyed here
} <- i destroyed here
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,变量的作用域为循环所在的外部块。因此,变量在外部循环开始之前就已经存在,并且在循环结束后它们继续存在。

for (int i = 0; i < 10; i++) { <- i created here
    for (int j = 0; j < 10; j++) { <- j created here
       <statements>
    } <- j destroyed here
} <- i destroyed here
Run Code Online (Sandbox Code Playgroud)