LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 984|回复: 7

gcc和g++编译时是不是对栈的大于进行了限制(急!!!)

[复制链接]
发表于 2005-1-12 21:38:10 | 显示全部楼层 |阅读模式
我在一个类中,定义了一个很大的
数组
大小有1024*512*15*sizeof(long)
就是30M
在C++ builder下编译执行都没有问题。
但在G++下面编译没问题,执行时出现段错误。
在VC下面就编译不过去。
各位高手帮忙,
急用,谢谢。
 楼主| 发表于 2005-1-12 21:41:39 | 显示全部楼层
试了一下,放在类外面好象就可以用了。
为什么放在类里面不可以用?高手指教。
发表于 2005-1-13 10:53:52 | 显示全部楼层
定义那么大的数组做什么?有这个必要吗?
 楼主| 发表于 2005-1-13 11:36:48 | 显示全部楼层
当然有必要,否则定义之干吗?如果这个数据放在文件里面运算,速度太慢.
发表于 2005-1-13 12:24:49 | 显示全部楼层
没必要事先定义,需要的时候 new 一个就行了
发表于 2005-1-13 12:50:32 | 显示全部楼层
所有的静态变量和全局变量都是在程序的数据段中分配的, 函数内部变量都是在栈(stack)中分配的,动态内存是在堆(heap)中分配的。数据段的容量根据编译器的不同各有不同,一般比较小。栈段和堆一般比较大,在有些系统中可以用虚拟内存扩展,理论上足够用。所以大内存块用动态的内存分配比较好。如new/delete或者malloc/free
发表于 2005-1-13 19:40:18 | 显示全部楼层
有些系统上可能数据段与堆栈段的大小是有限制的,用ulimit看看限制的大小是多少。
 楼主| 发表于 2005-1-13 22:11:56 | 显示全部楼层
谢谢各位, 我用vector,让他自动管理吧..
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表