博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++程序内存分布
阅读量:5815 次
发布时间:2019-06-18

本文共 674 字,大约阅读时间需要 2 分钟。

 

程序中变量的内存分配方式

  程序运行时需要占用多大的空间需要在编译时确定,便于操作系统为程序分配适当的内存空间。

  从静态存储区分配:程序的全局变量和静态变量都在这里分配,且在编译时已经分配好,在程序终止前被操作系统回收。

  在栈上创建:在函数调用时,函数的形参和局部变量都在栈上创建,函数执行完毕时这些内存自动被释放掉。

  从堆(heap)上分配:在程序运行期间,用动态存储分配函数申请和释放的内存

动态存储分配

  由动态内存管理系统管理的这块内存区域叫做“堆(heap)”:

  当需要动态灵活地分配内存空间时,需要用到动态存储分配 动态分配得到的内存块位于堆中,

  且没有名字 动态存储分配由库函数malloc.h提供 格式:

  p = (double* ) malloc(n*sizeof(double)) C++中动态存储分配由运算符new和delete实现 new和delete完成动态存储分配时,

  可以很好地和构造函数、析构函数进行交互,malloc和free不能自行调用构造函数和析构函数

 

具体方法: 指针变量名 = new 类型;

  指针变量名 = new 类型 (初值);

  指针变量名 = new 类型 [元素个数];

  当执行new时,有两件事发生: 大小适当的空间被分配给特定类型的变量;

  该存储空间首地址作为new表达式的返回值,若分配失败则返回0 ;

  基本类型一般不采用动态存储分配

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Star9527/p/3392960.html

你可能感兴趣的文章
闲里偷忙的CPU
查看>>
PG数据库升级步骤说明(pg_dumpall和pg_upgrade)
查看>>
HMSET key field value [field value ...]
查看>>
redis-4.0.1安装配置(CentOS 6.6)
查看>>
jboss (wildfly)安装
查看>>
MyEclipse SVN 地址
查看>>
HTML meta refresh 刷新与跳转(重定向)页面
查看>>
linux查看文件
查看>>
openstack 之 使用virtualbox 脚本自动安装mirantis openstack
查看>>
httpd: Could not reliably determine the server's fully qualified domain name
查看>>
III 23 rabbitmq
查看>>
使用 Direct Initial Load 初始化 GoldenGate 同步数据
查看>>
LoadRunner汉化
查看>>
linux服务之NFS
查看>>
Exchange 2016和 O365 混合部署系列二之Azure AD Connect同步工具部署
查看>>
算法学习之路|锤子剪刀布
查看>>
loadrunner脚本日志自动开启
查看>>
Mongoose源码剖析:核心处理模块
查看>>
六种常用的网络流量特征提取工具
查看>>
linux内核网络实现的一些问题
查看>>