你的堆栈太小了。把它放在堆上,使用新的:
int* genotype = new int[150000000];
我希望以下内容会有所帮助。
- 签名字符:-127 到 127(注意,不是 -128 到 127;这适用于 1 的补码平台)
- 无符号字符:0 到 255
- “plain” char:-127 到 127 或 0 到 255(取决于默认的 char 符号)
- 签名短:-32767 到 32767
- 无符号短:0 到 65535
- 有符号整数:-32767 到 32767
- 无符号整数:0 到 65535
- 长签名:-2147483647 到 2147483647
- 无符号长: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;
C++
#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();