从2D NSArray创建C数组

| 我有一个2D NSArray字符串数字,我想转换为2D C的双精度数组,以与BLAS / LAPACK函数一起使用(通过加速框架)。 这行代码似乎有效,但是效率似乎非常低,最终由于malloc错误而崩溃。有没有更有效的方法将此2D NSArray转换为C数组?还是将NSArrays与BLAS / LAPACK结合使用的简便方法?
double gridDataC[[nrows intValue]+1][[ncol intValue]+1];

for(i=6;i<[fileLines count]-1;i++){
    for(j=0;j<[ncol intValue]-1;j++){
        gridDataC[i][j]=[[[[fileLines objectAtIndex:i] componentsSeparatedByString:@\" \"] objectAtIndex:j] doubleValue];
    }  
} 
fileLines是一个数组,其中包含文件的各行,这些行被解析为各个数字。     
已邀请:
        这里很少涉及内存。 1.
componentsSeparatedByString:
创建一个自动释放的数组。由于要为该字符串中的每个对象循环,因此您将多次创建相似的数组。由于自动释放的对象直到运行循环结束才释放,这可能会阻塞内存。最好通过将方法调用带出内部循环来执行一次此操作。 2.
i
的值最令人困惑。您传递
i
作为
gridDataC
的索引。如果您是从ѭ6开始,则应该是ѭ5。
double gridDataC[[nrows intValue] + 1][[ncol intValue] + 1];

for( i = 6; i < [fileLines count] - 1; i++ ){
    NSArray * components = [[fileLines objectAtIndex:i] componentsSeparatedByString:@\" \"];
    for( j = 0; j < [ncol intValue] - 1; j++ ){
        gridDataC[i - 6][j] = [[components objectAtIndex:j] doubleValue];
    }  
} 
    

要回复问题请先登录注册