一个做了10年VC++开发的软件工程师认为在32位机器上可以动态申请4G内存

一个做了10年VC++开发的程序员认为在32位机器上可以动态申请4G内存
      晚上在公司食堂吃饭,大家谈话逐渐谈到C++的内存分配问题。其中一个做windows开发的同事的观点让我愕然。
      据说这位同事在windows上用VC++进行开发已经有十年有余。他声称,在32bit的windows上,一个进程可以一次new出来一个3G或者4G的内存,我差点就当场笑喷了。
      他的理由是由于虚拟内存的缘故,只要虚拟内存允许,一次就可以申请4G的内存空间。此人又扯到物理内存分段、物理地址不连续云云。
      我的直觉是此人没把物理内存地址、线性内存地址和逻辑内存地址搞明白。
      我虽然是走linux后端开发,但也不至于混蛋到他那种程度。32bit上的os的进程的逻辑地址空间上限是4G,linux内核占去2G(windows上是1G),还有代码段(.txt)、静态和全局数据段(bss和data)段,这些都要占去一部分内存,更别说给函数栈也得分配点,焉能申请4G的内存空间?让鬼给他变戏法变出4G的内存?
      至于扯到分段和虚拟地址,那是物理地址的事,跟一个进程的逻辑地址空间大小又有什么关系?
32位 c++ 内存分配

------解决方案--------------------
好吧 那我一次装4G数据去 压死他
------解决方案--------------------
支持楼主,说明10年都是在混,直接用下面这个压死他:
http://msdn.microsoft.com/zh-cn/library/ms189334.aspx

引用:
      晚上在公司食堂吃饭,大家谈话逐渐谈到C++的内存分配问题。其中一个做windows开发的同事的观点让我愕然。
      据说这位同事在windows上用VC++进行开发已经有十年有余。他声称,在32bit的windows上,一个进程可以一次new出来一个3G或者4G的内存,我差点就当场笑喷了。
      他的理由是由于虚拟内存的缘故,只要虚拟内存允许,一次就可以申请4G的内存空间。此人又扯到物理内存分段、物理地址不连续云云。
      我的直觉是此人没把物理内存地址、线性内存地址和逻辑内存地址搞明白。
      我虽然是走linux后端开发,但也不至于混蛋到他那种程度。32bit上的os的进程的逻辑地址空间上限是4G,linux内核占去2G(windows上是1G),还有代码段(.txt)、静态和全局数据段(bss和data)段,这些都要占去一部分内存,更别说给函数栈也得分配点,焉能申请4G的内存空间?让鬼给他变戏法变出4G的内存?
      至于扯到分段和虚拟地址,那是物理地址的事,跟一个进程的逻辑地址空间大小又有什么关系?

------解决方案--------------------
一个做了10年VC++开发的软件工程师认为在32位机器上可以动态申请4G内存


我表示  据说这位同事在windows上用VC++进行开发已经有十年有余

估计都是简单的基本的界面操作,复制别人代码完成工作而已!
没有自己真正的弄清楚原因,不懂内存管理!

楼主 ,笑笑就好!笑笑就好!一个做了10年VC++开发的软件工程师认为在32位机器上可以动态申请4G内存