2009年2月14日 星期六

Initialize Array

雖然說用平常建議使用initializer來初使化變數,但是如果遇到初使化一個很大的array的話,還是建議使用別的方法來初使化。讓我們來看一下底下的code:
int main(){
int arr[10] = {0};
// ...
return 0;
}
看起來沒什麼問題,但是如果我們再把array size從10改成1,000或是1,000,000或是更大,然後看一下compile出來的binary的大小,你就會發現大小差超多的! 雖然說平時沒事不太有機會宣告一個這麼大的array,不過如果真的遇到了,而binary的大小又是你的concern之一的話,建議改用下面的初使化方法,一是使用迴圈:
int main(){
int arr[1000000];
int i;
for( i=0; i<1000000; ++i )
arr[i] = 0;
return 0;
}
二是使用memset:
#include <cstring>
int main(){
int arr[1000000];
memset( arr, 0, sizeof(int)*1000000 );
return 0;
}
還是要再次提醒,畢竟這種狀況應該滿少的,平時的其他變數還是建議使用initializer。

沒有留言: