0

存在方式如何删除声明的 Matrixxd?因为当我想使用时:

     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+ Double 有什么区别?我认为没有。那么我只能将 J Datatypes 用于代码中的顺序?

4

1 回答 1

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

如果以后不需要 C,也可以使用块:

{
  MatrixXd C(400,400);
  // ...
}
// At this stage C has been automatically deleted.
于 2013-03-02T21:04:50.363 回答