c++ - 在 C++ 中重用内存

标签 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
}

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

最佳答案

不推荐,因为你是在给一个函数引入全局状态。当函数中有全局状态时,就会产生副作用。副作用会导致问题,尤其是在多线程程序中。

参见 Referential Transparency想要查询更多的信息。对于相同的输入,您总是希望有相同的输出,无论您使用多少线程。

如果要提高效率,允许用户自己指定缓冲区作为参数之一。

查看 global and static variables here 之间的区别.

关于c++ - 在 C++ 中重用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331306/

相关文章:

c++ - 为什么在循环之前将 const 标量值分配给 const 会有所帮助?

c++ - 具有动态分配的char数组的C++结构

ios - 我如何查看变量的引用计数?

iphone - 内存警告但事件字节较小

c++ - STL 或 boost 线程安全结构中是否存在用于线程间通信的行为 - 具有队列之类的行为?

c++ - 如何在C++中读取文件?

c++ - Lua:加载文件后获取全局函数失败

c++ - 为什么 as_const 的 const&& 重载被删​​除了?

c - 使用 const 外部值作为非常量外部值是否安全?

math - 为什么在 Math.h 中调用函数时会出现链接错误?