我用 C 语言编写了涉及本地字符数组的代码,但我读到,如果数组的大小太大,则可能会发生段错误。
在我的代码中,我包含了以下行:
#include <stdint.h>
我还在输出部分添加了:
printf("%d",SIZE_MAX);
执行后,我看到 -1,这表明我无限制。
然后我进入控制台并检查我的限制:
bash-3.1# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 8189
max locked memory (kbytes, -l) 4096
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 4096
cpu time (seconds, -t) unlimited
max user processes (-u) 8189
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
我看到很多“无限”的。
我是否正在寻找正确的位置来定义 char[] 数组的最大允许大小?如果是这样,我需要修改哪个值?
最佳答案
您需要修改堆栈
大小。 -s
是使用 ulimit
设置堆栈大小的选项。
当前在您的系统上它是 4 MB。
stack size (kbytes, -s) 4096
例如:
ulimit -s unlimited
//sets stack size to ulimited
关于c - 定义linux中C程序允许的最大char[]数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56154533/