我有这种事:分段故障而使用malloc和采取输入
int n,m;
scanf("%d %d",&m,&n);
int *arr = malloc(sizeof(int)*n*m);
for(int i=0;i<m*n;scanf("%d",arr+i),i++);
现在对于比如说N = 2和M = 3,它接受的第一个五年号码,并提供了有关分段错误第六个数字。我在循环之后立即尝试打印内容,但没有打印,不知道问题可能是什么?我广泛使用了类似的构造,从未遇到过问题。
编辑1: 该问题后来在程序中,但事情是我在循环后立即有一个printf,并没有打印任何东西,所以我认为它必须在这里。为什么printf没有打印什么?它与平行执行有关吗?对于坏格式抱歉,我是堆栈溢出新手。
阅读有关[未定义行为(https://en.wikipedia.org/wiki/Undefined_behavior)和[缓冲区溢出(HTTPS的另一种方式:// EN .wikipedia.org /维基/ Buffer_overflow)。编译所有警告和调试信息('gcc -Wall -Wextra -g')。 **使用调试器**'gdb'和[valgrind](http://valgrind.org/)。下次你在SO上提出一些问题时,请给出一些[MCVE](http://stackoverflow.com/help/mcve)。这*修复我的代码*问题是脱离主题。另请阅读[文档](http://en.cppreference.com/w/c),特别是'malloc'和'scanf' –
“这类东西”....请研究[mcve] 。 – Yunnosch
在调试器中检查'm','n','arr'的值(在'for'循环中有断点)。我相信你会感到惊讶。 –