• 关于堆栈的一些问题


    我在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

  • 相关阅读:
    文件系统管理
    软件包管理
    用户和用户组管理
    权限管理
    漏洞验证系列--MongoDB未授权访问
    【Jenkins】三、设置定时任务
    在CentOS Linux 7.5上安装MySQL
    CentOS7使用yum时File contains no section headers.解决办法
    Windows批处理(cmd/bat)常用命令学习
    Fiddler抓包工具总结
  • 原文地址:https://www.cnblogs.com/bioinfo/p/1204307.html
Copyright © 2020-2023  润新知