在C++中重用内存

ara*_*dia 4 c++ gcc memory-management

只是想知道这种代码建议提高性能吗?

void functionCalledLotsofTimes() {
   static int *localarray = NULL;

   //size is a large constant > 10 000
   if (localarray == NULL) localarray = new int[size];  

   //Algorithm goes here
}
Run Code Online (Sandbox Code Playgroud)

我也很好奇现代c ++编译器如g ++如何实现静态变量.它们是否像全局变量一样处理?

Bri*_*ndy 12

不建议这样做,因为您要将全局状态引入函数.当您在函数中具有全局状态时,您会产生副作用.副作用会导致问题,特别是在多线程程序中.

有关详细信息,请参阅参考透明度.使用相同的输入,无论您使用多少线程,您始终都希望拥有相同的输出.

如果要提高效率,请允许用户将缓冲区本身指定为其中一个参数.

这里查看全局变量和静态变量之间的差异.