2013-03-02 61 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.