当前位置:  开发笔记 > 编程语言 > 正文

C中的数组索引作为长整数给出了分段错误

如何解决《C中的数组索引作为长整数给出了分段错误》经验,为你挑选了1个好方法。

以下C代码给出了分段错误:

#include 
#include 

int main(){
        uint32_t *a;
        uint32_t idx=1233245613;
        a[idx]=1233;
        return 0;
}

如何在C中使用uint32_t作为数组的索引?或者我如何使用类似数组的结构,它可以将uint32_t和12位数作为索引?

我很感激任何帮助.



1> Brian R. Bon..:

变量"a"只是指针可变.

指针变量保存内存位置的地址.

您需要将a指向一个具有您已经分配的空间的内存位置.

你也试图在数组中进行索引.您可能没有足够的可用内存,因此请务必检查是否为NULL.

#include 
#include 
#include 

int main(void){

        uint32_t *a;
        uint32_t idx=1233245613;

        //This allows you to index from 0 to 1233245613
        // don't try to index past that number
        a = malloc((idx+1) * sizeof *a);
        if(a == NULL)
        {
           printf("not enough memory");
           return 1;
        }


        a[idx]=1233;
        free(a);
        return 0;
}

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有