使用C中索引大于50的数组时进行核心转储

时间:2013-12-16 18:07:28

标签: c arrays pointers

在编写带指针的简单程序时遇到了一些麻烦 和数组。目标是将值128插入到512个索引中 一个使用指针的数组。问题是,如果我使用超过50个索引 我正在获得核心倾销。我错过了什么或者是环境限制吗? 是malloc()需要还是应该在其他地方定义数组?

#include <stdio.h>
#include <stdarg.h>
#define MAX 512

int main(void){
    int  i, *p, a[MAX];
    i = 0;
    p = &a[0];
    for (i=0 ; i <= MAX; i++){
        *(p+i) = 128;
    }
    printf("First value  %d last value of pointer  %d\n", *p, *(p+(MAX-1)) );

}

1 个答案:

答案 0 :(得分:5)

i<=MAX更改为i < MAX。您的数组是MAX = 512个元素长,第一个元素是a[0],第二个元素是a[1],第500个元素是a[499]。没有a[512]