int数组的最大大小?

4 c c++

可能重复:
C编程,为什么这个大型数组声明会产生分段错误?

我写了一个简单的程序.

#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    int genotype[150000000];
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个奇怪的错误:

RUN FAILED(退出值1,总时间:131ms)

我怎么能节省这个数量int

(我有足够的内存来保存这个数量的ints,我的电脑是64位)

Nul*_*teя 5

你的筹码太小了.把它放在堆上,使用new:

int* genotype = new int[150000000];
Run Code Online (Sandbox Code Playgroud)

我希望以下内容有用.

  • signed char:-127到127(注意,不是-128到127;这适用于1-for-complement平台)
  • unsigned char:0到255
  • "plain"char:-127到127或0到255(取决于默认的char签名)
  • 签署简报:-32767至32767
  • unsigned short:0到65535
  • signed int:-32767到32767
  • unsigned int:0到65535
  • 签署长:-2147483647至2147483647
  • unsigned long:0到4294967295
  • 签署长多头:-9223372036854775807至9223372036854775807
  • unsigned long long:0到18446744073709551615

或者您可以使用limit.h来了解您的程序所依赖的内容.例如,这是你将如何找到int的最大范围:

C:

#include <limits.h>
const int min_int = INT_MIN;
const int max_int = INT_MAX;
Run Code Online (Sandbox Code Playgroud)

C++

#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();
Run Code Online (Sandbox Code Playgroud)

  • 对于所有圣洁的事情,当你完成它时,删除那个坏男孩. (3认同)
  • 大多数这些价值范围都不能保证. (2认同)