问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于C语言中定义数组大小的问题(最多能定义多少)

发布网友 发布时间:2023-05-09 00:18

我来回答

4个回答

热心网友 时间:2023-12-02 00:38

在MSDN中的array declarations有如下描述:
The type of integer required to hold the maximum size of an array is the size of size_t. Defined in the header file STDDEF.H, size_t is an unsigned int with the range 0x00000000 to 0x7CFFFFFF.

也就是说,只要硬件条件许可的条件下,数组的大小可以为0x7CFFFFFF(2G BYTE)。
数组所占空间为:count*sizeof(TYPE) , count是数组元素的个数,sizeof(TYPE) 是一个元素所占空间字节数。
如果定义数组空间超出2G,VC编译会报错:fatal error C1126: '2G' : automatic allocation exceeds 。。。
因此,当实际编程确实需要使用更大的数组时,则要采用动态定义方式(new malloc等)。

热心网友 时间:2023-12-02 00:39

动态分配,用虚拟存储。

#include <stdio.h>
#define array_size 1000000
void main()
{
unsigned char *a[8];
int i;
for (i=0;i<8;i++){
a[i] = (unsigned char *) malloc(array_size * sizeof(unsigned char));
}
if ( !a[7]) {
printf("No enough memory\n");
exit(1);
}
printf("pass alloc\n");
}

热心网友 时间:2023-12-02 00:39

查了一下,这个错误是栈溢出。 栈的大小是比较有限的, 不能定义这样大的东西

需要一个大的数组的话应该定义一个指针,然后用malloc分配内存空间给他,这个是在堆上分配的,可以分配很多

热心网友 时间:2023-12-02 00:40

两个办法
1。定义为全局变量
2. 动态分配 C语言使用malloc C++使用new

原因就是栈是有大小的

当然也可以指定大小 不过就没有可移植性了 而且指定也有范围

热心网友 时间:2023-12-02 00:39

在MSDN中的array declarations有如下描述:
The type of integer required to hold the maximum size of an array is the size of size_t. Defined in the header file STDDEF.H, size_t is an unsigned int with the range 0x00000000 to 0x7CFFFFFF.

也就是说,只要硬件条件许可的条件下,数组的大小可以为0x7CFFFFFF(2G BYTE)。
数组所占空间为:count*sizeof(TYPE) , count是数组元素的个数,sizeof(TYPE) 是一个元素所占空间字节数。
如果定义数组空间超出2G,VC编译会报错:fatal error C1126: '2G' : automatic allocation exceeds 。。。
因此,当实际编程确实需要使用更大的数组时,则要采用动态定义方式(new malloc等)。

热心网友 时间:2023-12-02 00:39

动态分配,用虚拟存储。

#include <stdio.h>
#define array_size 1000000
void main()
{
unsigned char *a[8];
int i;
for (i=0;i<8;i++){
a[i] = (unsigned char *) malloc(array_size * sizeof(unsigned char));
}
if ( !a[7]) {
printf("No enough memory\n");
exit(1);
}
printf("pass alloc\n");
}

热心网友 时间:2023-12-02 00:39

查了一下,这个错误是栈溢出。 栈的大小是比较有限的, 不能定义这样大的东西

需要一个大的数组的话应该定义一个指针,然后用malloc分配内存空间给他,这个是在堆上分配的,可以分配很多

热心网友 时间:2023-12-02 00:40

两个办法
1。定义为全局变量
2. 动态分配 C语言使用malloc C++使用new

原因就是栈是有大小的

当然也可以指定大小 不过就没有可移植性了 而且指定也有范围
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ipad propro现在的报价是多少钱? 为什么用联想扬天T5900V型的配置的电脑打街头篮球卡得要死 联想杨天T5900v这台电脑 联想扬天T5900V的问题 联想扬天威M5900d 1899元特惠:1T硬盘+4年上门售后,性能如何? 英尺,英尺,寸,英寸,尺寸的 ,关系 我的E家用户怎么进入这个页面? 尿酸高为什么不能喝纯净水 怎么用我的E家无线上网? 长时间饮用纯净水会引起人,体,尿酸,高吗 c语言数组的大小 真正的顺其自然,其实是竭尽所能之后的不强求 如果真的爱一个的话,都会在努力到无能为力之后,才选择放手!_百度... 失望攒够了,自然会放手。是什么意思 看似海阔天空,但却无处可逃!尽力后,一切交给上天决定。是什么意思? 顺其自然,实质上是无能为力时的放手 lp电吉他有清音吗 电吉他清音跟箱琴很像,好还是不好 电吉他调音是开清音吗? 百度私信发不出去,但是可以看到别人发进来,怎么回事? 为什么全民k歌私信发不出去了 免费健康体检属于义诊范围吗? 米的妈妈是什么? 米的妈妈是啥? 米的妈妈是什么 米妈妈是谁? 三星手机S6S7的曲屏都有什么功能 要详细点 只想知道有什么功能 全民k歌没屏蔽对方私信,为什么发私信我不能发 全民K歌私信发不出去怎么办 全民k歌私信怎么发不出去 c语言中结构体或数组大小未知是什么意思? 为什么军队文职会有本单位的人考 多久不用会被注销回收? 多久不上自动注销 会自动注销吗? 仙武帝尊叶辰的葫芦是什么 &quot;自然的节奏原则&quot;是指什么? 地铁高铁每年的体检都体检什么? 高铁乘务员都需要体检什么??? 请问一下动车乘务员的体检项目有哪些? 动车检查是搞什么的 高铁都是体检什么,要具体, 高铁乘务员需要体检什么?妇科病什么的查不查? 妈妈送银手镯给女儿生日快乐的心语 什么是“七座”?拜托了各位 谢谢 河南省七座国家历史文化名城名称? 河南那个城市有7座出租车 多久不上自动注销 长不用能自动注销么? cfa考试费用为什么这么贵