2013-03-02 29 views
0

存在如何删除声明的Matrixxd的方式?因为当我想用:如何删除JNi中的Eigen中的Matrixxd def

 delete 

这是说的错误在编译

 Eigen::Matrix4d' argument given to 'delete', expected pointer 
    make.exe: *** 

当我想用:

JNIEXPORT void JNICALL Java_com_jp_algi_CoreC_vector 
    (JNIEnv *env, jobject clazz, jfloatArray input){ 
jfloat* flt1 ; 
jsize size = env->GetArrayLength(input); 
jint i; 
jint j=0; 
jfloat* out ; 
Matrix4d C(400,400); 

//compute part 

    delete C; 

和最新Jdouble和C +双之间的区别?我认为没有一个。所以J数据类型只能用于代码中的顺序?

回答

0

首先,Matrix4d C(400,400);没有意义:Matrix4d是一个4x4矩阵,因此无法将其调整为400x400矩阵。

二,运营商delete用于释放运营商new分配的内存。在你的情况下,矩阵C是在栈上创建的,它是C负责分配/释放底层内存。

因此,假如你真正想要的动态矩阵大小(即,MatrixXd),那么你可以简单地把它调整为0x0释放所分配的内存:

MatrixXd C(400,400); 
// ... 
C.resize(0,0); 
// reuse C later 

如果您不需要Ç以后,你也可以使用方块:

{ 
    MatrixXd C(400,400); 
    // ... 
} 
// At this stage C has been automatically deleted.