gpt4 book ai didi

c++ - 如何使用 C++ 将特征稀疏矩阵转换为数组?

转载 作者:行者123 更新时间:2023-11-27 22:57:32 25 4
gpt4 key购买 nike

我使用 Eigen 包在 C++ 中创建了一个稀疏矩阵 mat。矩阵工作正常,但我正在尝试将其转换为数组以用作位图。 mat 的大小为 N+1。

我天真地尝试了以下操作:

  double zmat[N+1][N+1];

for(int i=0; i<=N; i++){
for(int j=0; j<=N; j++){
zmat[i][j]=mat.coeffRef(i,j);
}
}

但这在我调试时给了我一个异常(exception):

Unhandled exception at 0x0116B2C7 in Open_GL_test.exe: 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x001D2000).

有什么想法吗?

最佳答案

double zmat[N+1][N+1];

这就是给您带来麻烦的原因。将大矩阵声明为函数中的局部变量不是一个好主意。局部变量分配在堆栈上。许多机器将堆栈的大小限制为少量数据。在我的机器上,堆栈限制约为 8 兆字节。这意味着 N 的值大于一千将立即导致堆栈溢出。 N 的值大于几百(但小于一千)将导致调用树下方某处难以跟踪的堆栈溢出。

不要在堆栈上分配大量数据。一些替代方案是

  • 在命名空间范围内声明变量,
  • 使用 newdelete 分配(然后释放)矩阵,
  • 使用普通的特征矩阵,它会为您执行newdelete

关于c++ - 如何使用 C++ 将特征稀疏矩阵转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com