Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2342169
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:02:14

建议使用 double *a = new double[1000000];
保证没问题。原则上内存空间有多大可分配多大。

double a[1000000]; //全局变量可以,但这个空间要占 .EXE 文件的空间,生成的 .EXE 文件要包含这个数组
void MyFunction()
{
  double a[1000000]; //错误! 局部变量使用栈空间,导致栈空间不足,分配失败
  double *b = new double[1000000]; //推荐使用的方法,动态分配内存,不占 .EXE 文件的空间

  //... 变量 a 试图在栈空间分配 1000000 个 double 的空间
  //... 变量 b 是个指针,在栈空间里分配 4 个字节
  //... new double[1000000] 这个是分配内存的方法,也可以用标准 C 的 malloc() 和 free() 分配和释放内存。

  delete[]b;
}

如果内存不够,可以向虚拟内存申请空间,但是虚拟内存在硬盘上工作,速度特别慢,最好把数据分块在内存里处理,不用虚拟的。

--------------------next---------------------

阅读(1069) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~