【问题标题】:Accessing a chunk of memory by pointer in C from a big.matrix in R通过 C 中的指针从 R 中的 big.matrix 访问一块内存
【发布时间】:2013-08-26 03:27:55
【问题描述】:

R 中的bigmemory 包提供了一个类big.matrix,它将一个矩阵存储在内存中,该矩阵可以作为某种C++ 对象在R 会话之间共享,返回一个指向R 语言的指针。

例如:

library(bigmemory)
> a <- as.big.matrix(matrix(0, 5, 5))
> a
An object of class "big.matrix"
Slot "address":
<pointer: 0x24ae350>

使用 bigmemory 包中的更多函数,我可以将矩阵的简短描述写入文件,打开另一个 R 会话,并从新的 R 会话访问内存中的矩阵。

R,您也可以使用.Call().C() 调用C/C++ 代码。

我想在CC++(我更熟悉C)中实现一些函数,这些函数将在共享内存中的这个矩阵上运行,但我不知道如何去做。

给定内存中的地址以及已知大小,我可以访问 C 中的 double[][] 吗?还是我完全偏离了轨道?

【问题讨论】:

    标签: c++ c r rcpp r-bigmemory


    【解决方案1】:

    幸运的是,Dirk Eddelbuettel 和 Romain Francois 编写了一个很棒的工具,名为 Rcpp,它将为您完成所有(非常)艰苦的工作。 安装软件包,阅读小插图并享受重用Rcpp Gallery上的所有示例代码

    甚至还有一个如何将bigmemoryRcpp 结合使用here 的示例

    【讨论】:

    • 如果您可以更具体地了解示例/一般用例,特别是关于指针/地址位置的使用,则答案可能会得到改进(我正在学习)。
    • 我添加了一个带有 bigmemory 的示例链接,在 SO 上确实有很简单的示例,只是 google/Rseek Rcpp,还有一本关于该主题的书
    • 谢谢,不用担心,我正在等待我的到来!
    • 谢谢,这似乎是我需要的!
    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多