2d 数组中大于 10^5 的值未在范围内声明
Value greater than 10^5 in 2d array was not declared in scope
当我尝试时:
int global[10000][10000];
它有效,但何时
int global[100000][100000];
当我尝试访问它时,它给了我错误:
全局未在范围内声明。
任何答案 ?
这是我的测试代码:
#include<iostream>
#include<bits/stdc++.h>
int global[100000][100000];
using namespace std;
int main(){
int i=0;
while(i<=10){
cout << global[i][i];
i++;
}
return 0;
}
我尝试在g++ 8.2.0
中重现错误,但它产生了一个不同的但链接器错误:
/tmp/cceGsEkP.o: In function `__static_initialization_and_destruction_0(int, int)':
temp.cxx:(.text+0x60): relocation truncated to fit: R_X86_64_32 against `.bss'
temp.cxx:(.text+0x6f): relocation truncated to fit: R_X86_64_32 against `.bss'
上面的函数负责在main之前分配静态内存。由于阵列是连续分配内存的,因此int global[10000][10000]
由于大约 300MB 的内存需求,因此可能是可能的,但是
相反,您可以:
- 尝试减少维度,这将要求您删除不会在进一步计算中使用的冗余信息。
- 如果您不能减小维度但不会使用所有状态,则可以使用
std::map
.
我的印象是你想在一个非常大的矩阵的对角线上显示前十个条目。你为什么还要这样做?
- 由于您只需要大约 10 个数字,因此您可以轻松创建一个一维矩阵
int global[10]
。
您的 - 矩阵非常大,以至于会消耗您的整个内存,正如 Blaze 的评论中已经提到的。
- 为什么称该变量为
global
?你想实现什么?
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明