0
私は、パラメータがNumericMatrixであるRcpp関数にmatrix()オブジェクトを渡すRコードを持っています。 C++関数は正しい次元を返しますが、NumericMatrixを次元を超えてエラーなしでインデックスすることもできます。なぜこれが起こるのですか?下のMWE(RStudioで作成された.cppファイル)に続いて、出力の1つのインスタンスが続き、3番目の行は明らかに配列境界外のメモリから読み込まれます(?)。NumericMatrix:なぜ次元を超えてエラーなくインデックスできますか?
#include <RcppArmadillo.h>
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
void myFn(Rcpp::NumericMatrix X) {
std::cout << X.nrow() << std::endl;
std::cout << X.ncol() << std::endl;
std::cout << X(100,4) << std::endl;
}
/*** R
# create a matrix to be passed to the C++ function
mat = matrix(3, nrow=10, ncol=3)
myFn(mat)
*/
# 10
# 3
# 3.96421e+252