gpt4 book ai didi

c++ - 无法转换 double - new 运算符

转载 作者:太空宇宙 更新时间:2023-11-04 16:23:58 25 4
gpt4 key购买 nike

我的一段代码有问题。我在 C 程序中有这一行:

mel[i] = malloc(sizeof(double)*mellength[i]);

地点:

double *mel[16];
int mellength[16];

我需要在 C++ 中执行此操作,但我使用的是“new”运算符:

mel[i] = new double(sizeof(double)*mellength[i]);

地点:

int *mellength = new int[16];
double *mel = new double[16];

我收到以下错误:

error: cannot convert ‘double*’ to ‘double’ in assignment

完整功能:

void setup_Mel(int fft_size, int sample_rate, int *melstart, int *mellength, double *mel)
{

double fmax;
double dphi;
double fsample;
double freq;
double temp[fft_size/2];

fmax=2595*log10(8000.0f/700+1);
dphi = fmax/17;
freq = (double)sample_rate/fft_size;

for(int i=0; (i < 13); i++)
{
melstart[i] = fft_size/2;
mellength[i] = 0;

memset(temp, 0, sizeof(double)*fft_size/2);
for(int j=0; (j < fft_size/2); j++)
{
fsample = 2595*log10(freq*j/700 + 1);

if((dphi * i <= fsample) && (fsample < dphi*(i+1)))
{
temp[j] = (fsample-dphi*i)/(dphi*(i+1)-dphi*i);
}

if ((dphi*(i+1) <= fsample) && (fsample < dphi*(i+2)))
{
temp[j] = (fsample-dphi*(i+2))/(dphi*(i+1)-dphi*(i+2));
}

if ((temp[j] != 0) && (melstart[i] > j))
{
melstart[i] = j;
}

if (temp[j] != 0) mellength[i]++;
}

mel[i] = new double(sizeof(double)*mellength[i]);

}
}

希望有人能帮忙:)

最佳答案

mel[i] = new double(sizeof(double)*mellength[i]);

没有按照您的想法行事 - 它分配一个 double ,其值为 sizeof(double)*mellength[i]

要分配一个数组,你需要

mel[i] = new double[mellength[i]];

Sample

这两个版本不等价:

double *mel = new double[16];

在 C++ 中声明一个 double 数组,而

double *mel[16];

声明指向double 的指针数组。当您尝试取消引用 C++ 变量时,您会得到一个 double,因此您当然不能将它分配给一个 new 的返回值。

关于c++ - 无法转换 double - new 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com