在循環體內定義簡單變量,和在循環體外定義簡單變量效率是一樣的

在循環體內定義簡單變量,和在循環體外定義簡單變量效率是一樣的.
因爲簡單變量並不存在創建和釋放的過程,只是在棧上預留內存空間
見下例示範.
$ cat main.cpp
#include <stdio.h>
#include <string.h>
int main()
{
    for(int i=0; i<5;i++)
    {
        char buf[256];
        strcpy(buf,"abc");
        printf("buf:%p\n",buf);
    }
    return 0;
}
 ./test
buf:0x7ffdc645e450
buf:0x7ffdc645e450
buf:0x7ffdc645e450
buf:0x7ffdc645e450
buf:0x7ffdc645e450
簡單變量的分配只在棧上分配一次. 第二次並不會修改內存地址.
所有沒有任何額外開銷.

但是,如果循環體內是一個對象就不一樣, 由於對象的生命週期所限,
它會有創建和釋放的過程,循環時雖然對象地址沒有改變,但會有額外的創建,釋放過程
結果就會使得效率不一樣.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章