我想要一个指向静态数据的指针数组。例如
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/