在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
指针包含malloc
, calloc
或realloc
返回的地址。什么都没有。特别是,没有矩阵。
你也不应该在c++中使用free
,永远。
在您的情况下,您不需要做任何事情来释放内存,矩阵的析构函数将负责。
你得到这个错误的原因是你没有传递一个指向函数的指针。
但是,free要求传递一个已经由malloc
、calloc
或realloc
返回的指针,否则会发生未定义的行为。
当函数返回或退出时,对象的内存将被释放。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 关于armadillo稀疏矩阵中的内存分配
- 我可以在Armadillo中实例化matrix,然后在后面的代码行中设置它使用辅助内存吗?
- 使用Armadillo c++在声明后使用辅助内存创建vec
- c++内存错误(armadillo)
- 在c++中释放内存(armadillo)