建议使用 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) |