C++ && fftw3: fftwf_destroy_plan出错

描述:

0x000000006374B315 (libfftw3f-3.dll)处(位于 XXX.exe 中)引发的异常: 0xC0000005: 读取位置 0x000001382D378650 时发生访问冲突。
调试发现,问题出现在fftwf_destroy_plan。

分析:

此类异常的原因常见为:

  1. 数组越界
  2. 空指针
  3. 无效指针

查阅fftw文件中发现:
在这里插入图片描述
大概意思是当调用fftw_cleanup_threads函数来清理线程时,它会清除掉所有fftw分配的内存和资源(包括线程相关的数据),此后不可再调用之前所分配的plans。fftw_cleanup也有类似的效果。

我在两个类(类1、类2)中都用调用fftw函数。其中在类1中调用了fftw的线程,在析构函数时调用fftw_cleanup_threads来关闭线程。在最后关闭程序时,先调用了类1的析构函数,再调用类2的析构函数。类1析构函数的fftw_cleanup_threads会将整个程序中fftw分配的内存和资源都释放掉(包括类2中的)。因此调用类2的析构函数时,fftwf_destroy_plan函数出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值