zoukankan      html  css  js  c++  java
  • 关于堆栈的一些问题

    我在CSDN 中的提问,高手的回答,解答了我许久的困惑,故记下来。

    请问64位系统中
    问题一,堆的大小是多少?堆的大小跟变量,如一个数组的大小有何关系?
    问题二,假设物理内存为1G,则程序中可操作的内存是多少?,允许生成多大的变量呢,例如我想把一个2G大小的文件读入程序,会出错吗?
    问题三,普通的生成的变量,跟用new生成的变量相比,后者有什么优势,或者说用new来控制内存分配的程序,有什么优点?

    回答

    64位不太熟悉,
    但是在32位和64位应该没有本质的区别:
    32位中,
    1.堆的大小默认是1m,可以调整编译选择改变,堆的大小和变量和数组没有关系;
    2.可以使用的是虚拟内存,程序员一般情况下没有办法直接操作物理内存,一般32位的操作系统,可以使用的内存在2g左右,
    可以通过调整到3g,但是不能超过4g。
    把一个2g的文件读入内存,不是什么好办法,建议使用文件内存映射。
    3.普通的生成的变量,是在堆栈(就是栈吧)上的,new出来的变量是在堆上的。
    后者的优点是比较灵活,可以由程序员控制,分配和回收。而且后者大小可以比较大。。。。。

    原帖的地址是 http://topic.csdn.net/u/20080520/22/9381f4f5-0653-464c-a509-541c731b4953.html

  • 相关阅读:
    LibreOJ2095
    Codeforces
    LibreOJ2241
    LibreOJ2044
    LibreOJ2043
    LibreOJ2045
    LibreOJ2042
    LibreOJ2097
    洛谷P4175
    POJ2888
  • 原文地址:https://www.cnblogs.com/bioinfo/p/1204307.html
Copyright © 2011-2022 走看看