java - 什么会导致无效地址 0xda9739b8 传递给 free:值未分配?
问题描述
我正在尝试通过蓝牙从三十部分机器(EEG 耳机)中检索信号并将其写入 file.csv。现在,我与耳机成功连接,但在录制信号时遇到了一个我不知道的致命信号。
这是我可能认为可能是问题的代码:
IEE_DataChannel_t[] Channel_list;
String[] Name_Channel = {"AF3","T7","Pz","T8","AF4"};
以及检索数据的功能
case 2:
if(bp_writer == null) return;
for(int i=0; i < Channel_list.length; i++)
{
SWIGTYPE_p_double ptheta = edkJava.new_double_p();
SWIGTYPE_p_double palpha = edkJava.new_double_p();
SWIGTYPE_p_double plow_beta = edkJava.new_double_p();
SWIGTYPE_p_double phigh_beta = edkJava.new_double_p();
SWIGTYPE_p_double pgamma = edkJava.new_double_p();
int result = -1;
result = edkJava.IEE_GetAverageBandPowers(userId, Channel_list[i], ptheta, palpha, plow_beta, phigh_beta, pgamma);
if(result == edkJava.EDK_OK){
Log.e("FFT", "GetAverageBandPowers");
try {
bp_writer.write(Name_Channel[i] + ",");
addData(edkJava.double_p_value(ptheta));
addData(edkJava.double_p_value(palpha));
addData(edkJava.double_p_value(plow_beta));
addData(edkJava.double_p_value(phigh_beta));
addData(edkJava.double_p_value(pgamma));
bp_writer.newLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
edkJava.delete_double_p(ptheta);
edkJava.delete_double_p(palpha);
edkJava.delete_double_p(plow_beta);
edkJava.delete_double_p(phigh_beta);
edkJava.delete_double_p(pgamma);
}
break;
}
}
};
有添加数据和设置file.csv的功能:
private void setDataFile() {
try {
String eeg_header = "Channel , Theta ,Alpha ,Low beta ,High beta , Gamma ";
File root = Environment.getExternalStorageDirectory();
String file_path = root.getAbsolutePath()+ "/FFTSample/";
File folder=new File(file_path);
if(!folder.exists())
{
folder.mkdirs();
}
bp_writer = new BufferedWriter(new FileWriter(file_path+"bandpowerValue.csv"));
bp_writer.write(eeg_header);
bp_writer.newLine();
} catch (Exception e) {
Log.e("","Exception"+ e.getMessage());
}
}
public void addData(double data) {
if (bp_writer == null) {
return;
}
String input = "";
input += (String.valueOf(data) + ",");
try {
bp_writer.write(input);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
它成功添加了用户,但是当开始录制时,我遇到了
A/libc: Invalid address 0xda9739b8 passed to free: value not allocated
A/libc: Invalid address 0xda973068 passed to free: value not allocated
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 3969 (motiv.fftsample)
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 3938 (motiv.fftsample)
I/libc: Another thread contacted debuggerd first; not contacting debuggerd.
那么,我如何跟踪错误,我只是构建应用程序的初学者。谢谢
解决方案
推荐阅读
- java - Hibernate 是否允许编写字符串/类型安全 SQL?
- apache-kafka - Ansible 角色需要在另一个角色的任务文件中间运行 - 如何创建可维护的剧本?
- javascript - 未处理的承诺拒绝类型错误 undefined is not a function near ...navigator.geolocation.getcurrentpositionasync...]
- node.js - 提高在 PM2 集群上运行的 NodeJS 性能
- arrays - 将生成的数组乘以值 x 并找到平均值
- java - 从 MVN 或 repo.spring 站点下载后,如何从本地 m2 路径(第二次)获取 Maven 依赖项?
- django - 通过 django 元类中的 ManyToManyField 表修改默认的元类
- powershell - PowerShell 中 PromptForChoice 的奇怪行为
- time-complexity - T(n)的复杂度= 8T[(n+3)/5]+T[((n+3)/5)-3]+196.n/5+336?
- bootstrap-4 - 引导程序中的margin-left 5px?