java - 使用 Java jna 和 FFTW3 包装器获取 malloc 错误

标签 java c jna fftw

我正在使用取自 this 的 Java fftw3 包装器问题。 (代码here)

我只想对双元素数组应用第二种类型的 DCT 变换,但如果我尝试调用 fftw_execute 方法,我会不断收到此错误:

java(787,0x10b243000) malloc: *** error for object 0x7fba642c5408: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

为什么?

这是我的代码:

package com.project.fftw3;

import java.io.File;
import java.io.IOException;
import java.nio.DoubleBuffer;

import fftw3.FFTW3Library;
import fftw3.FFTW3Library.fftw_plan;

public class MainClass {
    static FFTW3Library fftw = FFTW3Library.INSTANCE;

    public static void main(String[] args) {
        int i,j,w,h;
        File in = new File("Images/Baboon.bmp");
        //File out = new File("Baboon-" + System.currentTimeMillis() + ".txt");
        try {
            ImageMatrix im = new ImageMatrix(in);
            w=im.getImageWidth();
            h=im.getImageHeight();
            double [] row = im.getRow(0);
            double [] oarr = new double[w];
            DoubleBuffer din = DoubleBuffer.wrap(row);
            DoubleBuffer dout = DoubleBuffer.wrap(oarr);
            fftw_plan p = fftw.fftw_plan_dft_1d(din.array().length,din,dout,5,FFTW3Library.FFTW_ESTIMATE); //5 is REDFT10
            fftw.fftw_execute(p);
            fftw.fftw_destroy_plan(p);
        } catch (IOException e) {
        }
    }
}

最佳答案

您的尺寸似乎有误:

        double [] oarr = new double[h];

将其更改为:

        double [] oarr = new double[w];

这与您看到的错误一致,假设 w > h。

关于java - 使用 Java jna 和 FFTW3 包装器获取 malloc 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23958119/

相关文章:

c - 将一个字符数组拆分为字符数组数组时,第一个数组始终显示为随机字符

java - JNA 捕获每个窗口 : java. lang.AbstractMethodError

java - 用于设置鼠标速度的 JNA SystemParametersInfo 返回 false(未更改)

java二进制转十进制

java - 如何从给定的 java 类创建 UML 图?

c - 如何在 C 中将 float 放入 char 数组中?

c - 编辑窗口在一定限制后停止显示文本。 ( Windows )

java - 混合 C++/Qt/Java 应用程序

java - for 循环在已编译的类文件中转换为 do while 循环

java - 将 UTC 时区转换为 EST 时区