大佬教程收集整理的这篇文章主要介绍了C中的数组索引限制,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <stdlib.h> #define N 44000 int main(void) { long width = N*2 - 1; int * c = (int *) calloc(width*N,sizeof(int)); c[N/2] = 1; return 0; }
根据GDB,问题来自c [N / 2] = 1,但是原因是什么?
检查calloc是否返回NULL.
假设您正在64位Linux下编译64位程序.如果您正在执行其他操作 – 如果系统上的长度不是64位,则可能会将计算溢出到calloc的第一个参数.
例如,试试
#include <stdlib.h> #include <stdio.h> #define N 44000L int main(void) { size_t width = N * 2 - 1; printf("Longs are %lu bytes. About to allocate %lu bytes\n",sizeof(long),width * N * sizeof(int)); int *c = calloc(width * N,sizeof(int)); if (c == NULL) { perror("calloc"); return 1; } c[N / 2] = 1; return 0; }
以上是大佬教程为你收集整理的C中的数组索引限制全部内容,希望文章能够帮你解决C中的数组索引限制所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。