社区
C语言
帖子详情
请问char数组最大能多少?是否无法超过1024?
asfawefawf
2005-12-09 08:37:45
我指定char test[300*1024]的时候没有任何问题,而char test[1024*1024]就会出错,是否char[]无法超过1024*1024?
因为我需要在程序运行中,读取一个文件到内存,而文件大小不固定,大多数时候超不过300k,但是考虑到万一超过300k的情况,所以希望设置大一点。
...全文
2690
34
打赏
收藏
请问char数组最大能多少?是否无法超过1024?
我指定char test[300*1024]的时候没有任何问题,而char test[1024*1024]就会出错,是否char[]无法超过1024*1024? 因为我需要在程序运行中,读取一个文件到内存,而文件大小不固定,大多数时候超不过300k,但是考虑到万一超过300k的情况,所以希望设置大一点。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
34 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luvybird
2005-12-13
打赏
举报
回复
mark
asfawefawf
2005-12-11
打赏
举报
回复
谢谢各位!最后还是找办法malloc分配到堆了,栈还是要小心使用的好噢,:)
Flood1984
2005-12-10
打赏
举报
回复
char test[1024*1024];
//定义这么大的变量你都不考虑一下空间?
这鸟光一个数组就要占1M的内存。
lsvine
2005-12-10
打赏
举报
回复
怎么不给个栈的修改方法
这不就是吗?
如果确有需要,在VC中是可以调整栈内存的大小,选项是/statck.
详细点:project->setting->link->gategory:output->stack allocation
google一下也能找到....
ypine
2005-12-10
打赏
举报
回复
这么大动态分配比较好
shicheng521
2005-12-10
打赏
举报
回复
栈、堆……
bombwang
2005-12-10
打赏
举报
回复
mark
zw24127
2005-12-09
打赏
举报
回复
剩余空间不够了吧
alen_ghl
2005-12-09
打赏
举报
回复
修改编译器默认栈大小,把它改大点
speeches
2005-12-09
打赏
举报
回复
学习!如果是需要 超过实际内存空间的大小,那还是申请硬盘空间好了.
最好自己做个虚拟内存,页交换,表交换什么的...这样子过不了多少时间,可以搞个os来了...
发达了...
qimans
2005-12-09
打赏
举报
回复
实用共享内存文件影射方式,UNIX上可以处理几十个G的数据,在PC机上没试过
另外,建议修改程序结构,不要因为程序的原因影响应用功能。
sankt
2005-12-09
打赏
举报
回复
需要更大的内存空间,可以使用动态内存分配,最大不超过2G
可以用new 或 malloc
cky41
2005-12-09
打赏
举报
回复
学习
Zark
2005-12-09
打赏
举报
回复
在VC中栈的缺省值为1M,所以当你分配1024*1024个char后,栈就溢出了。读取文件时,一般来说不会全部读入,只读要用的部份,如果必须全部读入,大多数使用堆上内存。
如果确有需要,在VC中是可以调整栈内存的大小,选项是/statck.
RainWindy
2005-12-09
打赏
举报
回复
显然这种情况是栈空间不足,也可以延伸到内存不足。
针对你的情况,已经可以控制300*1024大小空间了,如果文件超过这个大小,可以先读取一部分文件内容,并对这块内容做处理,处理好后再读取下一块文件内容。这种方式会比较麻烦,但由于文件的不确定性,不管你的内存有多大,都有可能会内存不足的,所以你最终还是要考虑使用这种方式,相当于是缓冲方式。
csucdl
2005-12-09
打赏
举报
回复
怎么不给个栈的修改方法
cssin
2005-12-09
打赏
举报
回复
是否可以考虑循环读文件呢,每次读一部分,处理一部分,然后再把内存中的数据和硬盘上的数据交换?
sdzg_wq
2005-12-09
打赏
举报
回复
关注
jiazichenzhan
2005-12-09
打赏
举报
回复
学习……
aspnetwuxueyou
2005-12-09
打赏
举报
回复
1
你在栈上申请空间,肯定不行了。比如说wince中栈只有64k,在symbian中就更小了。
你可以把你的变量声明为全局的,这样内存是在数据段中,不会影响栈
加载更多回复(14)
C语言中
char
型转string
如果担心溢出问题,可以使用`snprintf()`,它允许指定缓冲区的
最大
长度,防止写入
超过
缓冲区大小的数据。 6. **使用`strdup()`** 虽然`strdup()`不是标准C库的一部分,但许多C实现(如POSIX)提供了这个功能,它...
C语言字符
数组
初始化
- 其中`array_name`是
数组
的名字,`array_size`是指定
数组
的大小,即
数组
能容纳的
最大
字符数量。 2. **字符
数组
的初始化**: - **逐个字符初始化**: ```c
char
str[10] = {'I', ' ', 'a', 'm', ' ', 'h', 'a',...
C语言
数组
、指针与编程技巧
- **
数组
的初始化值不能
超过
声明的大小**,否则会导致编译错误。 ##### 1.3 访问
数组
元素 通过索引访问
数组
元素: ``` int a[10]; a[0] = 32; // 给
数组
的第一个元素赋值 int value = a[5]; // 获取
数组
第六个元素...
C语言教学课件:13-3_字符
数组
.ppt
`,但需要注意输入的字符串长度不能
超过
数组
的定义长度。 - 输出:使用`%s`输出字符串,如`printf("%s", str);`,遇到`\0`停止输出。 6. **字符串的处理**: 在处理字符串时,要注意避免
数组
越界。例如,如果输入...
单片机同一IO口输出两组
数组
//
数组
1,数值不要
超过
15 unsigned
char
str2[] = {15, 8, 6, 12, 3, 6, 4}; //
数组
2 void exp(unsigned
char
*str1, unsigned
char
*str2, unsigned
char
n1, unsigned
char
n2) { dat_out = ((str1[n1] ) & 0...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章