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

标签 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)) );

}

最佳答案

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

关于在 C 中使用索引大于 50 的数组时进行核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617761/

相关文章:

C# 在字典中存储函数

c - C 的一元 '&' 有什么作用?为什么它不适用于常量?

C 变量不在我期望在内存中找到它的位置

c - 如何在编译时禁止使用全局变量

c - 该程序的预期输出是什么?

c++ - 具有巨大数组的 Kmeans

javascript - JS过滤数组但如果存在反向则不过滤

c# - 在C#中比较两个数组后如何修复输出?

C 重新分配二维字符数组

c++ - 如何查找 "process"占用的大小/内存空间