试图printf大char []时的Segfault

dwu*_*urf 0 c printf segmentation-fault

以下代码是我的分歧.

#include <stdio.h>

int main(int argc, char **argv)
{
    const int MEMSIZE = 1024*1024*10;
    char memblock[MEMSIZE];
    memblock[10] = '\0';

    printf("%s", memblock);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

字符数组是否有一些大小限制?我已经忘记了所有的C,我在这里做了些蠢事吗?

Dav*_*rra 5

通过这个小程序发现你的最大堆栈大小,并检查你的阵列是否更大

#include <stdio.h>
#include <sys/resource.h>

int main ()
{
    struct rlimit rl;
    int result = getrlimit(RLIMIT_STACK, &rl);
    printf("max stack size: %u\n", rl.rlim_cur);
}
Run Code Online (Sandbox Code Playgroud)

结果在我的主人身上

max stack size: 10485760
Run Code Online (Sandbox Code Playgroud)

局部变量存储在堆栈中,显然,它们不能大于其最大大小