我正在编写具有大量1维和2维数组的代码.我得到了"错误:无法分配区域",我认为是因为分配了太多内存.我使用"malloc"和"free"函数,但我不确定我是否正在使用它们.也许你知道我在哪里可以看到C中内存管理的好例子?
所以..我只是想让一个算法工作,现在这个代码只是函数后的函数..
//memory allocation for 1D arrays
buffer = malloc(num_items*sizeof(double));
//memory allocation for 2D arrays
double **cross_norm=(double**)malloc(150 * sizeof(double *));
for(i=0; i<150;i++)
{
cross_norm[i]=(double*)malloc(num_items*sizeof(double));
}
//code
Window(N, window_buffer);
STFTforBMP(buffer,N,f, window_buffer);
getMagnitude(buffer,f, N, magnitude);
calculateEnergy(flux,magnitude, f);
calculateExpectedEnergy(expected_flux, candidate_beat_period, downbeat_location, f);
calculateCrossCorrelation(cross, flux, expected_values, f);
findLargestCrossCorrelation(&cross_max, cross, f);
normalizeCrossCorrelation(cross_norm, &cross_max, cross, f);
...............
Run Code Online (Sandbox Code Playgroud)
我该如何使用该free功能?
如果输入数组是{0,1,2,3,4,5,6,7},那么任何人都可以告诉我在Fast Furier变换后的结果是什么.
我得到了{28,0,0,0,0,0,0,0}.这不对吗?
只想在C中测试FFT实现.
谢谢,安德烈
如何在C/C++中将short类型的数组转换为double类型的数组?
我有代码从wav文件中读取音频数据,输出是short类型的数组.所以现在我想将这些数据用于FFT(我不想使用库).
任何技巧或想法?
我收到错误:'for'之前的语法错误,我只是不明白为什么?你能解释一下为什么吗?我在代码中几乎没有类似的错误.
#define N 1024
void Reverse_Binary( double *a, unsigned long Len);
int main()
// here is error as well: error: syntax error before '{' token
{
//here are different variables for all code
buf = malloc(num_items*sizeof(double));
//here are different functions
Reverse_Binary(buf,N);
}
void Reverse_Binary( double *a,unsigned long Len)
{
long x, xprim;
int temp;
for (x=0; x<Len; x++)
{
xprim= rev(x,N);
if (xprim > x)
{
temp = a[x];
a[x] = a[xprim];
a[xprim] = temp;s
}
}
}
Run Code Online (Sandbox Code Playgroud)