C/C++:堆栈详解总结

本文详细探讨了C/C++中的堆和栈内存管理,包括申请方式、系统响应、大小限制、效率比较以及存储内容。栈由系统自动分配,适用于小规模的局部变量,而堆适用于需要更大内存和手动管理的情况。堆的分配速度较慢,但灵活性高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储器 header 2
栈区 系统自动分配,由程序自动创建、自动释放。函数参数、局部变量以及返回值等信息都存在其中
堆区 使用自由,不需要预先确定大小。多少情况下需要程序员手动申请、释放。如果不释放,程序结束后有操作系统垃圾回收机制收回。例如,s = (char *)malloc(10),
静态区/全局区 全局变量和静态变量的存储区域。程序结束后由系统释放
常量区 用于存放常量的内存区域
代码区 存放代码
例如:

  #include <stdio.h>
  int quanju;/*全局变量,全局区/静态区(static)*/
  void fun(int f_jubu); /*程序代码区*/
  int main(void)/**/
  {
    int m_jubu;/*栈区(stack)*/
    static int m_jingtai;/*静态变量,全局区/静态区(static)*/
    char *m_zifum,*m_zifuc = "hello";/*指针本身位于栈。指向字符串"hello",位于文字常量区*/
    void (*pfun)(int); /*栈区(stack)*/
    pfun=&fun;
    m_zifum = (char *)malloc(sizeof(char)*10);/*指针内容指向分配空间,位于堆区(heap)*/
    pfun(1);
    printf("&quanju   : %x/n",&quanju);
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值