犰狳:解决 Ax=b 分配堆?

Posted

技术标签:

【中文标题】犰狳:解决 Ax=b 分配堆?【英文标题】:Armadillo : solving Ax=b allocates heap? 【发布时间】:2014-08-15 22:15:44 【问题描述】:

我正在寻找用于执行 实时 作业的数学库,我想知道库 Armadillo 是否可以执行 x= A\b 实时无需在堆上分配(或者是一种方式,通过在启动时在堆上进行预分配)。

我可能会查看代码,但它使用 LAPACK 作为库,我不知道在哪里查看

有人可以帮我找到解决 Ax=b 的代码吗?看看它是否使用堆分配?另一种方法是计算之前和之后分配的堆,但如何做到这一点?堆走?

谢谢

杰夫

【问题讨论】:

查看一些在谷歌上找到的源代码,看起来犰狳默认使用动态分配,但是你可以做一些分配编译时间。 是的,但是如何检查特定函数是否使用在堆上创建的临时变量? 它会调用任何以 new/malloc 结尾的东西吗?你不能轻易地做这些检查。 【参考方案1】:

使用 Perfmon.exe,我能够在我怀疑在堆上分配的函数之前和之后检查程序的内存大小。而对于 100k 的变量来说,差异就超过了 100k...

【讨论】:

以上是关于犰狳:解决 Ax=b 分配堆?的主要内容,如果未能解决你的问题,请参考以下文章

在犰狳中使用相同的内存进行LU分解

如果类有析构函数,堆数组分配 4 个额外字节

在 C++ 中,堆分配对象内的堆栈对象在哪里分配?

堆分配变量的结构成员对齐

堆缓冲区溢出试图重新分配内存。 C语言

堆栈内存分配的区别