繁体   English   中英

C ++中的可用内存(armadillo)

[英]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);

那是在堆栈上分配的,您不能释放它,当程序退出作用域时,它将被销毁。

http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html

只能 free保存由malloccallocrealloc返回的地址的指针。 没有其他的。 特别是没有矩阵。

您也永远不需要在C ++中使用free

在您的情况下,您无需执行任何操作来释放内存,矩阵的析构函数将负责处理此事。

收到错误的原因是因为您没有传递指向该函数的指针。

但是, free要求您传递malloccallocrealloc返回的指针,否则会发生未定义的行为。

当函数返回或退出时,对象的内存将被释放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM