今晚在图书馆,有点无聊,就和数组最大值给犟上了~~~~~~~~~~~~~~~~~~~~
平台:vs2012/g++(windows版)
内存:4GB
系统:64位win7旗舰版
源代码:
#include<iostream>
#include<stdlib.h>
using namespace std;
int main(void)
{
char* p = new char[1024*1024*1024*1+12000000]; //new数组能申请到少于2G字节的空间
char p1[1024*1024-1024*50]; //分配不到1MB的空间
char *a =(char*)malloc(sizeof(char)*(1024*1024*1024*1+12000000)); //malloc也能申请少于2G字节的空间
p1[1024*1024-1024*50-1]=66;
p[1024*1024*1024*1+12000000-1]=65;
a[1024*1024*1024*1+12000000-1]=67;
cout<<p1[1024*1024-1024*50-1]<<endl;
cout<<p[1024*1024*1024*1+12000000-1]<<endl;
cout<<a[1024*1024*1024*1+12000000-1]<<endl;
delete []p;
free(a);
return 0;
}
总结:1、new 和malloc创建的数组分配的空间是在堆上的,申请空间大小不超过2GB;
2、普通数组申请空间是在栈上的,栈都比较小,我的平台上不超过1M.
展望:1、不知道其他平台的程序空间分配大小是怎样的,知识不够啊。。。。
2、努力,要在操作系统上学点知识,都没在那边学过点东西。。。。。。