c - 打印指针值时出现段错误

标签 c

当我尝试打印 v 的值时,以下程序崩溃。我试图理解为什么。有什么建议吗?

#include <stdio.h>

int main() {

    int v[5000000];
    printf("\n\nv = %p", v);
     return 0;
}

编辑:如果我分配 500000 个或更少的元素,而不是分配 5000000 个元素,则程序不会出现段错误。

编辑(2):增加堆栈大小解决了问题。在Linux上,我在阅读stephane-rouberol的答案后增加了堆栈大小(使用 ulimit -s <some_large_number> )。

最佳答案

恭喜,您出现了堆栈溢出:)

找到一种方法来增加堆栈的大小或动态分配数组:

int* v = malloc( 5000000 * sizeof *v);

/* do something */

free( v );

关于c - 打印指针值时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12138366/

相关文章:

c - WM_SYSCOLORCHANGE 消息的含义

c - 如何获取 *chars 并返回非整数?

c++ - 为什么 char 数组必须以空字符结尾?

c - 使用 printf/scanf 和 %s 的漏洞

c - 分段故障二叉树

c++ - 链接不同版本的共享库

c - 68000,可移植JIT库

将 png 转换为 sdl 的 c header

c - C 中表达式求值的顺序

c - 为什么使用多个 "if"s 不起作用,但在 while 循环中使用 "if"s 和 "else if"s 却起作用?