C语言中malloc和静态数组最多能开到多大呢

 我来答
风若远去何人留
推荐于2016-02-20 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部
取决于物理系统剩余内存大小。
在C语言中,malloc动态开辟的空间,以及静态数组均是占用堆上的内存的。
而系统堆内存是与进程无关的,堆内存的剩余量,就是系统内存的剩余量,包括物理内存和虚拟内存。
所以,只要系统内存剩余有多大,那么malloc和静态数组就可以开多大。
不过,由于系统内存剩余量并非固定,而是由系统运行实际情况决定的,所以在编程中,一般不会使用过大的静态数组,或动态内存,以免出现运行不稳定的问题。
看见什么吃什么heyboy
2012-12-31 · TA获得超过444个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:61.8万
展开全部
其实malloc函数来说的话,应该是能开到 剩余内存+虚拟内存的大小。但是你一般不需要用到这么大的内存,所以用malloc函数而言是绝对足够的。

另外C的话静态数组一般是1000000*int 字节。主要看你系统的内存环节。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HyperSpy
2012-12-30 · 超过18用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:27.7万
展开全部
静态数组最多能开到2K字节,相当于1024个整数。
malloc开辟的动态数组容量则与机器的内存总容量和当前占用的内存容量有关系。

其实静态数组和动态数组都要占用内存,只是静态数组占用的是程序的栈区,栈区一般只有2KB,而动态数组则没有容量限制,但是已经占用的内存不能开辟动态空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2012-12-30 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5712万
展开全部
语法上没有规定最大。
计算机用虚拟存储,也就是存储器里RAM里放不下时,就写到磁盘里去,要用的数据块从磁盘里读进来,不用的数据块,放到盘里。利用倒进倒出,多大的数组都可以,只是程序执行效率变低了。
三维图形动态显示,常要很大的数组,高效率的显示卡(硬件)会带额外的RAM。
理论上说,只要不超过硬件许可,开多大都可以。实际上,有限制。
我的计算机,这个可以:
#include<stdio.h>
int a[1000000]; // 全局量,允许比较大的数组
int main(){
a[999999]=999999;
printf("%d ",a[999999]);
return 0;
}

若int a[1000000]; 放到main()里,就不行了。
---
C语言无符号整型数有最大限制,所以一个维的大小,不能超过整型数最大限制。
malloc 动态分配,可以测定,分配是否成功。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式