Memory Efficiency in C++

wind_feng 的头像

今天在帮朋友看Program的时候,得到了一个严重的教训。
看看以下两个写法:

Way 1:
int main(){
int x;

for(int i = 0; i<300; i++){
x = 50;
}
}

Way 2:
int main(){
for(int i = 0; i<300; i++){
int x = 50;
}
}

在Loop里面Declare int x,以及在Loop以外Declare int x,其实是有非常大的差别。

在Loop里面Declare int x,会导致电脑不断开启新的Memory位子给x。
在Loop外面的便只开一次位子。

这会导致原本很简单的Program,无端端占了一大片RAM。
这现象便叫做Memory Leak。

像我朋友的更惨,他需要把183张的照片丢进RAM里,以编辑一个3D图像。
就因为有几个类似这样的错误,导致他的Program无端端占了好几倍的RAM。

结果RAM直接爆满,GG。

Programming真是一件需要经验的东西。

Posted In