有 3 个类型的数组double。我通过指针将它们传递给函数,为它们分配新的大小,初始化它们。但是退出函数后,数组本身最终并没有改变。错误在哪里?
double *open = new double[LIST_SIZE];
double *high = new double[LIST_SIZE];
double *low = new double[LIST_SIZE];
double *close = new double[LIST_SIZE];
double *volume = new double[LIST_SIZE];
CompressTo(open, high, low, close, volume, date, count, 5);
void CompressTo(double* open, double* high, double* low, double* close, double* volume, Date* date, int &count, int TF)
{
vector<double> newOpen, newHigh, newLow, newClose, newVolume;
vector<Date> newDate;
//Здесь я добавляю в вектора какие-то значения, размер у всех векторов одинаковый.
count = newOpen.size();
open = new double[count];
high = new double[count];
low = new double[count];
close = new double[count];
volume = new double[count];
date = new Date[count];
copy(newOpen.begin(), newOpen.end(), open);
copy(newHigh.begin(), newHigh.end(), high);
copy(newLow.begin(), newLow.end(), low);
copy(newClose.begin(), newClose.end(), close);
copy(newVolume.begin(), newVolume.end(), volume);
copy(newDate.begin(), newDate.end(), date);
}
您将指针值
open等传递给函数。在函数中,你给局部变量赋值,这些局部变量只在函数中定义,与外部变量无关——除了它们的初始值取自外部变量。退出函数后,函数内部
open的值和其他值就会丢失。所以内存泄漏给你增加了麻烦。
你在 C++ 中工作吗?通过引用传递 (
void CompressTo(double* &open...)。但这远不是你唯一的,也不是最大的错误......