如何分配500×500的二维数组?

shiyubeijing 2006-11-11 03:20:27
我想分配一个500×500的二维数组,作为矩阵,但是我试了两种方法不行!
1、直接用double A[500][500]不行!栈溢出!
2、用double* p = new double[500*500];这个可以分配内存了,但是由于我要做的数值算法,运算效率及其低下!我想是不是可能分配在堆上的数据操作效率就会很低!
不知道大家有没有遇到类似的问题?说说你们是怎么解决的呢?
...全文
264 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhgj 2006-11-11
  • 打赏
  • 举报
回复
强烈建议在堆分配啊。。
天涯倦客 2006-11-11
  • 打赏
  • 举报
回复
更改 相关stack 的编译参数。。
编译参说或者 程序里加编译指令(delphi)
shiyubeijing 2006-11-11
  • 打赏
  • 举报
回复
多谢热心人的建议!我回去好好想想!
dmz2922990 2006-11-11
  • 打赏
  • 举报
回复
学习。。。
lujun5100 2006-11-11
  • 打赏
  • 举报
回复
如果你用VC的话,我知道解决方法
嘿嘿,我要是弄数值计算地

VC中申请大数组时可能出现错误. 例如:double a[100][100][100]; 在申请空间时就会出现错误. 可以在project->setting->link->output中修改stack参数可以改为512000000.这样就不会出现问题了,当然你的内存要足够大.


我的博客
http://lujun.blog.163.com/-Xrtl.html
morphymorphy 2006-11-11
  • 打赏
  • 举报
回复
那用new、malloc和全局变量这三个方法哪一个快呢?

--------------------
个人觉得都是连续地址空间,按地址取值,效率都差不多,
最多是在空间分配时系统的开销有差别。。
shiyubeijing 2006-11-11
  • 打赏
  • 举报
回复
哦。。。那用new、malloc和全局变量这三个方法哪一个快呢?
lann64 2006-11-11
  • 打赏
  • 举报
回复
就一个double A[500][500]数组会栈溢出?应该不会吧。
实在不行编译时用/stack选项
bingdian37 2006-11-11
  • 打赏
  • 举报
回复
学习一下
morphymorphy 2006-11-11
  • 打赏
  • 举报
回复
栈的空间只能申请到2MB

~~~~~~~~~~~~~~~~~~~
可以多申请:/stack:0x...


我以前做C程序遇到过大数组问题,
用malloc函数解决的,,数据操作效率和用数组一样,只是动态分配内存的时候要慢点。。
lin_style 2006-11-11
  • 打赏
  • 举报
回复
char *a[]="aaaaaaa";
char *b="bbbbbbb";
aaaaaaaaaaa是在运行时刻赋值的;
而bbbbbbbbbbb是在编译时就确定的;
但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。
对应的汇编代码
10:a=c[1];
004010678A4DF1movcl,byteptr[ebp-0Fh]
0040106A884DFCmovbyteptr[ebp-4],cl
11:a=p[1];
0040106D8B55ECmovedx,dwordptr[ebp-14h]
004010708A4201moval,byteptr[edx+1]
004010738845FCmovbyteptr[ebp-4],al

LZ想法对,,某种意义上说,栈上的调用比堆快
栈的空间只能申请到2MB
  • 打赏
  • 举报
回复
把A定义成全局变量就可以了。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧