dart代码异常一般不会导致APP退出,BUT。。。还是遇到了,一看异常信息,懵逼两秒
后来分析发现,最近新增的C代码,有个接口的参数类型是个二维数组:
signed char ble_rssi[][num_anchors]
对应的Dart类型是 Pointer<Pointer<SignedChar>>,导致异常的原因是创建Pointer<Pointer<SignedChar>>的姿势不对,以下是正确姿势:
extension ListInt2Ext on List<List<int>> {
///
/// 二维数组 转 指向指针的指针
///
Pointer<Pointer<SignedChar>> toPtrToSignedCharPtr() {
//先创建一个一维数组
int subLen = this[0].length;
Pointer<Pointer<SignedChar>> ptrToPtr = malloc<Pointer<SignedChar>>(length);
int startAddr = ptrToPtr.address;
for (int i = 0; i < length; i++) {
for (int j = 0; j < subLen; j++) {
Pointer<SignedChar> ptr = Pointer.fromAddress(startAddr + i * subLen + j);
ptr.value = this[i][j];
}
}
return ptrToPtr;
}
}