C/C++变量内存是何时进行分配?

  1. 函数内的局部变量是在函数体执行前分配空间。函数执行完毕后回收空间。
    具体地说,对于定义在函数内部的非静态局部变量(auto)会在调用函数时在系统的栈区预先分配好存储空间,并在执行到该变量的声明语句时进行初始化,由于栈区的数据并不会初始化为0,因此若在定义时不进行初始化则相当于随机初始化。在函数调用结束后回收分配的栈区空间,因此局部变量的内存空间分配是在程序运行时进行的。

  2. 静态变量是在程序运行时分配空间。程序结束时回收空间。
    具体地说,静态变量和全局变量会在编译时就进行BSS区进行内存的分配,并对于已经确定的变量进行初始化。由于该存储区会进行的值全为0,因此未初始化的变量会默认进行0初始化。在程序运行结束后会自动回收分配出的空间。

以上两种变量内存空间的分配都是由操作系统完成的。

  1. 使用new或者malloc创建的变量是在调用new,malloc函数的时候在堆区进行分配。调用delete,free函数的时候进行回收。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C 语言内存管理指对系统内存的分配、创建、使用这一系列操作。 在内存管理中,由于是操作系统内存,使用不当会造成毕竟...
    yiyiyuan阅读 3,831评论 0 0
  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 10,948评论 2 23
  • 1、分配方式 静态分配: 静态区(全局区),分配全局变量、静态变量优先于main函数。 动态分配: (1)自动分配...
    X_xxieRiemann阅读 11,267评论 0 2
  • c++内存分配方式 1.内存分配简单介绍: 一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(sta...
    王王王王王景阅读 4,855评论 0 0
  • 一个由C/C++编译程序占用内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值...
    顶儿响叮当阅读 3,218评论 0 1

友情链接更多精彩内容