skyli
C++之梦
C++博客
首页
新随笔
联系
聚合
管理
随笔 - 62 文章 - 71 trackbacks - 0
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
(66)
acm之路(22)
C++之路(32)
php之路(10)
其它知识(2)
随笔档案
(62)
2007年8月 (2)
2007年7月 (2)
2007年5月 (1)
2007年4月 (3)
2007年3月 (1)
2007年2月 (1)
2007年1月 (2)
2006年12月 (1)
2006年11月 (2)
2006年10月 (9)
2006年9月 (2)
2006年8月 (5)
2006年6月 (4)
2006年5月 (10)
2006年4月 (9)
2006年3月 (6)
2006年1月 (2)
文章分类
(31)
生活点滴(23)
文章转载(3)
笑话转载(5)
文章档案
(31)
2006年9月 (1)
2006年8月 (2)
2006年6月 (5)
2006年5月 (12)
2006年4月 (6)
2006年3月 (2)
2006年1月 (3)
友情链接
&豪's Blog
Asp's Blog
Chgsh's Blog
My CSDNBlog
Sempr's Blog
XLQ's Blog
校内网
最新随笔
1. pow函数的性能测试
2. 一道算法题引发的动态内存管理的思考
3. 再谈子集树
4. 位运算求子集树
5. 筛法求素数
积分与排名
积分 - 41482
排名 - 64
最新评论
1. re: 数组最大长度问题
超过1M 具体1024*1000差不多。应该在堆中或进程数据区分配。
按照这个原理,全局变量在进程数据区,所以不会出错。
局部变量的话使用new在堆中分配。
--helloworld
2. re: 我的动态规划启蒙题
祝贺!我也刚刚看懂,但是加上“一条路径”的输出就更好了。是吧
--东·德
3. re: 我的留言本
评论内容较长,点击标题查看
--黄小姐
4. re: itoa函数
怎么第二个函数无法编译呢。?
int n = atoi(itoa(num, str, 2));
n是不是还是应该是当初num 10 的值啊
--sheena
5. re: 最大匹配匈牙利算法
编程风格很好啊。
--Linzertorte
阅读排行榜
1. itoa函数(15295)
2. 测试程序运行时间(2105)
3. 数组最大长度问题(1477)
4. istringstream用法(1336)
5. 字符串hash函数(1196)
评论排行榜
1. 关于语句作用域(7)
2. 测试程序运行时间(7)
3. itoa函数(7)
4. 数组最大长度问题(5)
5. 如何创建二维数组?(5)
数组最大长度问题
最近遇到了一个问题:
在函数内定义了一个一百万的数组。
编译、连接没问题,但执行时就会提示堆栈溢出。
但定义全局变量却没有问题。
谁能给我解释一下为什么?
posted on 2006-05-06 23:32
beyonlin
阅读(1478)
评论(5)
编辑
收藏
引用
所属分类:
C++之路
FeedBack:
#
re: 数组最大长度问题 2006-05-07 08:39
漂舟
在函数内定义,数组是产生在栈中,有大小限制,具体大小,应该和编译器或设置有关,默认的好像是1MB,
定义成全局,是在堆中产生,所以能通过。
回复
更多评论
#
re: 数组最大长度问题 2006-10-25 13:22
Asp
全局变量也有限制吧,在MS VC++6.0里面定义int array[2147483647];是允许的,但是长度定义成2147483648的话,编译的时候就会报错:
error C2118: negative subscript or subscript is too large
Dev C++和其他的编译器里面,我就不知道了,没有试过……
回复
更多评论
#
re: 数组最大长度问题 2006-10-26 00:12
beyonlin
2147483648对于int已经溢出,当然会报错。
int array[2147483647]在MS VC++6.0下虽然不报错,但会发生运行错误。
并且int array[2147483647]在VS.net 2005下是编译不过的。
我认为全局数组最大的内存可能是2147483647 bytes。
即int array[2147483647/4]或double array[2147483647/8]。
回复
更多评论
#
re: 数组最大长度问题 2006-10-31 19:19
Asp
这个就不知道了,没有仔细研究过……
不过可能和sizeof()有关,a[i]=a+sizeof(type)*i,而i取2147483647的话就越界了吧,因为指针也是4字节,所以可能sizeof()返回的长度和int一样……
如果是这样的话,那就真的最大只能到2147483647/sizeof(type)了……
回复
更多评论
#
re: 数组最大长度问题
2008-12-19 21:38
helloworld
超过1M 具体1024*1000差不多。应该在堆中或进程数据区分配。
按照这个原理,全局变量在进程数据区,所以不会出错。
局部变量的话使用new在堆中分配。
回复
更多评论
刷新评论列表
标题
姓名
主页
验证码
*
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
一道算法题引发的动态内存管理的思考
再谈子集树
位运算求子集树
字符串hash函数
优先队列用法
计数排序
《C++ Primer》之读书笔记七
插入排序泛型算法
《C++ Primer》之读书笔记六
《C++ Primer》之读书笔记五
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理