C中的数组分配出错

时间:2016-11-30 10:34:12

标签: c pointers

我尝试编译这个简单的程序,它会分配一个dyamic数组,并在每个位置返回5的倍数。但是它不起作用,它在指针中报告错误。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[]) {
    int n;
    int i;
    int* ptra;
    scanf("%d", &n);
    ptra = malloc(n*(sizeof(int)));

    for(i=0; i<=n; i++){
        ptra[i] = (5*(i+1));
        printf("%d\n", ptra[i]);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:3)

ptra的索引范围必须从0n-1(包括两者)。但是在这里:

for(i=0;i<=n;i++){

你出界了,undefined behaviour。将其更改为:

for(i = 0; i < n; i++) {

注意:请务必检查所有失败的标准函数的返回值(代码中为scanf()malloc())。

答案 1 :(得分:0)

您的for循环超出了限制:必须与 i<n 一样长,而不是 i<=n

尝试做:

for(i=0; i<n; i++){