整数数组的最大大小
Maximum size of int array?
可能的重复项:
C编程,为什么这个大数组声明会产生分段错误?
我写了一个简单的程序。
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int genotype[150000000];
}
但是我得到一个奇怪的错误:
运行失败(退出值 1,总时间:131 毫秒)
如何保存此数量的int
?
(我有足够的内存来保存这个数量的 int
s,我的电脑是 64 位的)
您的堆栈太小。把它放在堆上,使用 new:
int* genotype = new int[150000000];
我希望以下内容会有所帮助。
- 符号字符:-127 到 127(注意,不是 -128 到 127;这可容纳 1 的补码平台)
- 无符号字符:0 到 255
- "纯"字符:-127 到 127 或 0 到 255(取决于默认字符符号)
- 签名短:-32767 到 32767
- 无符号短:0 到 65535 签名 int: -32767
- 到 32767
- 无符号整数:0 到 65535
- 签名长:-2147483647 到 2147483647
- 无符号长整型:0 到 4294967295
- 签名长长:-9223372036854775807 to 9223372036854775807
- 无符号长长:0 到 18446744073709551615
或者你可以使用 limit.h 来了解你的程序所依赖的内容。例如,这是您找到 int 最大范围的方式:
三:
#include <limits.h>
const int min_int = INT_MIN;
const int max_int = INT_MAX;
C++
#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();
作为链接器选项...
/STACK 601048576 // 150000000 * 4 (assume size of int), and 1Mb for general.
但是嘿..不要这样做。我什至不确定会发生什么。
您将此值分配给堆栈,这比堆或静态存储更受限制。
对于C++来说,std::vector
将是更好的选择。
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
vector<int> genotype(150000000);
}
如果你想使用动态内存,只需声明一个指针,指向你想要分配的类型,在这种情况下 int,并调用 malloc() 函数,参数是你想要的字节数"数组"。在这种情况下,您需要获取单个整数的大小并将其乘以您希望它的大小(即单元格的数量):
确保释放任何错误分配的内容,否则会出现内存泄漏。
相关文章:
- C++使用整数的压缩数组初始化对象
- 在一定长度后从数组中打印时缺少整数
- 是否基于数组B整数打印数组A中的整数
- 检查TCHAR数组输入是否为带符号整数C++
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 从二进制文件中读取整数数组
- 整数区间(或 int 数组)中每个数字的出现次数
- 新的整数数组向右移动?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- C++数组输入不接受一定数量的整数
- 从两个 4x64 位整数数组中获取取模
- 如何计算数组整数的总可能组合
- 2D 字符串数组 C++:整数串联成字符串
- 将数组整数2除以偶数和
- 将2d数组整数数据从c++发送到qml