matlab c 内存不足,c – 在Matlab中为mex程序提供更多内存

我的C mex编译文件内存不足(更具体地说,我对mxMalloc的调用有时会返回NULL).从快速计算我估计我的文件总共要求mxMalloc大约500 MB内存(可能多达1 GB),并且我在64位

Linux机器上运行我的文件,其中16 GB内存几乎完全运行Matlab.但是,mxMalloc经常返回NULL.

我想有几个原因导致这种情况发生(内存碎片等),但无论如何,500 MB在16 GB内存机器上似乎没有那么多要求.

我假设我对mxMalloc的调用从Matlab的堆请求内存,但我不是100%肯定它(mxMalloc请求毕竟是由Matlab处理的,而不是直接由OS处理).那么有没有办法增加我的mex文件的“堆”大小?

谢谢

最佳答案 您可以使用malloc(而不是mxMalloc),但必须手动管理内存(例如,您必须免费调用;它不像mxFree那样是可选的).您还可以尝试使用c和boost的共享/作用域指针进行编译.你的mexFunction签名将需要extern“C”.

您可能内存不足的一个原因是您的阵列太长.mxArray必须是连续的数据.所以mxMallocing他们和mxFreeing他们可能会破坏你的内存空间.虽然std :: vector也必须是连续的,但std :: list不一定是.

像原版STL的绳索类也可以是一个很好的实现.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值