[英]Free memory in c++ (armadillo)
我想在c ++中使用对象(以下程序中的“ ii”)后释放内存:
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main()
{
cx_mat ii(2,2,fill::eye);
cout << ii <<endl;
free (ii);
return 0;
}
但是编译后,我遇到以下错误:
error: cannot convert ‘arma::cx_mat {aka arma::Mat<std::complex<double> >}’ to ‘void*’ for argument ‘1’ to ‘void free(void*)’
有身体可以引导我吗?
cx_mat ii(2,2,fill::eye);
那是在堆栈上分配的,您不能释放它,当程序退出作用域时,它将被销毁。
您只能 free
保存由malloc
, calloc
或realloc
返回的地址的指针。 没有其他的。 特别是没有矩阵。
您也永远不需要在C ++中使用free
。
在您的情况下,您无需执行任何操作来释放内存,矩阵的析构函数将负责处理此事。
收到错误的原因是因为您没有传递指向该函数的指针。
但是, free要求您传递malloc
, calloc
或realloc
返回的指针,否则会发生未定义的行为。
当函数返回或退出时,对象的内存将被释放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.