gpt4 book ai didi

c++ - 如何释放 Kiss FFT 分配的内存?

转载 作者:行者123 更新时间:2023-11-28 02:45:21 26 4
gpt4 key购买 nike

我正在开发一个 C++ 项目,使用 FRDM-KL25Z 板来测量振动。我的代码正在运行,但我需要它循环运行。我的内存有问题,我没有足够的空间来存储两次值。我使用了 free() 命令,但即便如此我也什么都没有恢复我的所有内存。有人知道如何清除 kiss-fft 使用的所有内存吗?它没有免费功能,或者仅列出它所具有的无法正常工作的功能。

我有足够的内存来运行一次并显示结果。我试图用这个函数做一个循环,但即使使用 free 命令,我也无法恢复我的初始内存。

{

void TestFftReal(const char* title, const kiss_fft_scalar in[L], kiss_fft_cpx out[L / 2 + 1])
kiss_fftr_cfg cfg;
cfg = kiss_fftr_alloc(L, 0/*is_inverse_fft*/, NULL, NULL);

if (cfg != NULL) {
size_t i;
kiss_fftr(cfg, in, out);
free(cfg);
/// Do stuff ///
} else {
printf("Not enough memory.\n");
exit(-1);
}
}

最佳答案

文件 kiss_fft.h 列出了一个名为 KISS_FFT_USE_ALLOCA 的开关。如果您在编译时定义这个宏,那么所需的内存将在堆栈上分配,而不是使用 malloc。当函数结束时它会自动释放。

您必须编写循环体以包含一个函数来分配空间并运行 fft,以便它在下一次循环迭代之前返回(并释放空间)。

关于c++ - 如何释放 Kiss FFT 分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620196/

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