下面的代码对我有影响。

#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;
}

字符数组有大小限制吗?我忘了我所有的C,我在这里做什么蠢事吗?

最佳答案

char数组的大小没有限制,但是与可用的堆内存相比,堆栈的大小将相对受限。你可能把这堆东西都溢出来了。你可以试着让memblock静止

static char memblock[MEMSIZE];

或者动态分配
char* memblock = malloc(MEMSIZE);
if (memblock == NULL) {
    printf("Error: failed to allocate %d byte buffer\n", MEMSIZE);
    return -1;
}
memblock[10] = '\0';
printf("%s", memblock);
free(memblock);

关于c - 尝试打印大字符时出现段错误[],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14455911/

10-11 15:35