在Mac(2GB RAM)上使用 Eclipse时,我遇到了以下问题:
每当我尝试创建一个超过8384896字节的数组时,我就会出现分段错误.以下程序将执行:
#include <stdio.h>main(){ double x[1048112]; printf("sizeof(x) = %li",sizeof(x));}
输出将是(如预期的那样):
sizeof(x)= 8384896
但是增加x中的元素数量或在main()中创建其他变量会导致无法执行的程序和段错误.看起来我正在达到一些内存限制,我不明白为什么会发生这种情况.
如果有人能向我解释这个问题,或者可能为我的问题提供某种解决方案,我将非常感激.
如果你真的需要分配大的东西,你可以使用malloc
在堆上这样做:
double *x = malloc(1048112 * sizeof(double));
请注意,通过此更改,sizeof(x)不再返回数组的大小,它返回double *的大小.如果你需要知道你的阵列有多大,你需要自己跟踪它.
并且,为了完整性,当您完成数据时,您将需要调用free
,否则您将有一点内存泄漏:
free(x);总结
以上是内存溢出为你收集整理的C:在函数内声明的数组不能超过~8MB的内存.全部内容,希望文章能够帮你解决C:在函数内声明的数组不能超过~8MB的内存.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)