难以调试可能的RCPP内存泄漏
Having Trouble Debugging Possible Rcpp Memory Leak
我正在使用名为rcppcoda的rcppeigen编写R软件包
我认为项目中某个地方可能有内存泄漏,但我不确定。不幸的是,我在运行valgrind上遇到困难,因为看来它可能不支持OS X Mojave,并且在此处遇到了错误。
我认为复制错误应该很容易:
library(RcppCoDA) # devtools::install_github("jsilve24/RcppCoDA")
library(microbenchmark)
d <- c(100,1000)
X <- matrix(abs(rnorm(prod(d))), d[1], d[2])
X <- clo(X)
# This runs fine
z <- RcppCoDA::alr(X, d=4)
# This for some reason takes forever to run... I think this might be a bug
for (i in 1:1000){
z <- RcppCoDA::alr(X, d=4)
}
# This causes RStudio to crash... or takes forever to run...
microbenchmark(
RcppCoDA::alr(X, d=4), times=10
)
我已经一遍又一遍地重读代码,除非我只是以某种方式滥用RCPP,否我真的不知所措。我什至不确定我的代码还是其他地方是否有错误。
任何帮助都将不胜感激!
多亏了一些有用的评论,我才能够在docker映像中工作。
只是我如何做的概述:
- 我使用了Docker Image:Rocker/Rstudio
- 启动图像/容器:
docker run rocker/rstudio
- 在该运行中:在单独的终端:
docker ps
- 抓住运行映像的容器ID,然后运行:
docker exec -it <containerID> bash
- 安装Valgrind和DevTools所需的许多其他事情
- 与Valgrind调试一起运行R:
R -d "valgrind --leak-check=full"
- 运行任何代码引起错误并评估Valgrind输出。
谢谢您的帮助!
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 如何使用Rcpp将R函数转换为C++函数
- rcpp函数中的清理时间很长
- 难以调试可能的RCPP内存泄漏