当我尝试打印 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/