c++ - C++ 函数中指向静态 double 的指针数组

标签 c++ c static

我想要一个指向静态数据的指针数组。例如

  void func(...) {
     ...
     static int mysize = initial_size;
     static double* d[3] = {new double[mysize], new double[mysize], new double[mysize]};
     for(int i=0; i < 3; ++i) {
        if(cond) {
           //-re-allocate d if necessary.
           use d here;
        }
        else {
           use d here;  //-since d is static; it persists and so this is justified?
        }
     }
     //-Can I get away with not deleting d here??
  }

我的推理是,由于 d 是指向静态 double 的指针数组;它在函数内部分配一次,因此当一切都超出范围时,它有望被删除吗?我不知何故认为不是。这可能是一厢情愿并导致内存泄漏?

也许我在这里使用静态 C++ vector 会更好?我想在这里使用静态,以便在满足某些条件时(例如,如果满足 cond 或其否定等某些条件),重新使用 d 中先前计算和存储的数据。希望这是有道理的,并提前感谢您的任何想法。

最佳答案

删除d会出错,因为它没有用new分配。但是,由于各个元素是用new分配的,因此您需要小心避免孤立它们的内存。

关于c++ - C++ 函数中指向静态 double 的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10746175/

相关文章:

c - 为什么我的程序在 Ubuntu gcc 上运行而不是 OSX gcc?

java - 类加载、静态 block

c++ - 何时以及如何在 C++ 中初始化静态数据?

java - 变量是如何被覆盖的

c++ - 与阻塞调用同步

c++ - 如何测试stringstream运算符>>是否已解析错误类型并跳过它

c++ - cv::viz::Widget 是否可点击? (OpenCV C++)

c - 在函数中返回字符串

c++ - 使用大括号表示法 C++ 填充动态数组

java - Android 语音调用桌面