当前位置: 首页 > wzjs >正文

教学资源系统网站建设方案百度网盘资源分享

教学资源系统网站建设方案,百度网盘资源分享,天津b2b网站建设公司价格,书画艺术网站建设概况文章目录 前言1. 栈(Stack)特点生命周期示例 2. 堆(Heap)特点生命周期示例 3. 静态区(Static/Global 区)a. 已初始化数据段(.data 段)特点生命周期示例 b. 未初始化数据段&#xff0…

文章目录

  • 前言
  • 1. 栈(Stack)
    • 特点
    • 生命周期
    • 示例
  • 2. 堆(Heap)
    • 特点
    • 生命周期
    • 示例
  • 3. 静态区(Static/Global 区)
    • a. 已初始化数据段(.data 段)
      • 特点
      • 生命周期
      • 示例
    • b. 未初始化数据段(.bss 段)
      • 特点
      • 示例
  • 4. 文字常量区(常量区)
    • 特点
    • 生命周期
    • 示例
  • 5. 代码区(Text Segment)
    • 特点
    • 示例
  • 6. 线程局部存储(Thread-Local Storage, TLS)
    • 特点
    • 示例
  • 7.综合示例代码
  • 8.关键区别总结
  • 总结


前言

在 C/C++ 中,变量的存储位置直接影响其生命周期、作用域和访问方式。以下是主要存储区域及其示例代码:


1. 栈(Stack)

特点

特点:自动分配/释放,函数局部变量、参数等,速度快但空间有限(通常几MB)

生命周期

生命周期:函数调用开始到结束

示例

void foo() {int a = 10;          // 栈上分配char buffer[1024];   // 栈上数组
}

2. 堆(Heap)

特点

特点:手动分配/释放malloc/free 或 new/delete),空间大但需管理

生命周期

生命周期:从分配直到显式释放

示例

// C 风格
int *p1 = (int*)malloc(sizeof(int));  // 堆分配
free(p1);
// C++ 风格
int *p2 = new int;       // 堆分配
delete p2;

3. 静态区(Static/Global 区)

a. 已初始化数据段(.data 段)

特点

特点:显式初始化的全局变量、静态变量

生命周期

生命周期:程序启动到结束

示例

int global_var = 42;      // 全局变量,.data 段void func() {static int static_local = 10;  // 静态局部变量,.data 段
}

b. 未初始化数据段(.bss 段)

特点

特点:未显式初始化的全局变量、静态变量(默认初始化为0)

示例

int global_uninit;        // .bss 段(初始化为0)void func() {static int static_uninit;  // .bss 段(初始化为0)
}

4. 文字常量区(常量区)

特点

特点:存放字符串常量和 const 常量(只读)

生命周期

生命周期:程序启动到结束

示例

const char* str = "Hello";  // "Hello" 在常量区,str 自身可能在栈或静态区
const int MAX = 100;        // 可能被编译器优化到常量区或直接内联

5. 代码区(Text Segment)

特点

特点:存放程序的可执行指令(如函数体代码)

示例

void some_function() {  // 函数体的**机器码**存放在代码区// ...
}

6. 线程局部存储(Thread-Local Storage, TLS)

特点

特点:每个线程独立的变量(C11/C++11 起支持 _Thread_local 或 thread_local)

示例

#include <threads.h>
_Thread_local int tls_var;  // 每个线程独立实例

7.综合示例代码

#include <stdlib.h>
#include <stdio.h>// 静态区(.data 段)
int global_initialized = 10;// 静态区(.bss 段)
int global_uninitialized;void func() {// 栈变量int local_stack = 20;// 静态局部变量(.data 或 .bss 段)static int static_local = 30;// 堆分配int* heap_var = (int*)malloc(sizeof(int));*heap_var = 40;free(heap_var);
}int main() {// 栈变量int a = 50;// 堆分配int* b = (int*)malloc(sizeof(int));*b = 60;func();// 常量区const char* str = "Constant String";free(b);return 0;
}

8.关键区别总结

存储区 分配方式 生命周期 典型用途
自动 函数调用期间 局部变量、参数
手动(new/malloc) 显式释放前 动态数据结构
静态区 编译器 程序运行期间 全局变量、静态变量
文字常量区 编译器 程序运行期间 字符串常量、const
代码区 编译器 程序运行期间 可执行指令

理解这些区域有助于避免内存泄漏、悬垂指针等问题,并优化程序性能。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了C/C++中的不同变量存储位置下的变量的分配方式、生命周期、典型用途。

http://www.dtcms.com/wzjs/15520.html

相关文章:

  • 网站建设分工的通知seo网络推广企业
  • 建自己的网站培训机构退费法律规定
  • 爱战网关键词查询网站怎么做网站赚钱
  • 把做的网站放到互联网上产品如何做线上推广
  • 免费正版高清图片素材库网站seo关键词设置
  • 网站开发所需费用明细百度网址大全 官网
  • 成考做那个网站的题比较好神马搜索seo优化排名
  • wordpress 清除cookie厦门百度快速优化排名
  • 做学科竞赛的网站优化排名推广技术网站
  • 网站301跳转有坏处吗个人如何在百度上做广告
  • 网站开发的背景与环境重庆百度推广电话
  • wordpress邮件发送功能无法开启优化网站推广排名
  • 做外贸的国际网站有哪些最新nba排名
  • 网站建设教程出售用苏州久远网络淄博网站营销与推广
  • 童装网站建设日程表广州软文推广公司
  • jsp网站入门什么是营销型网站?
  • 领地网建的网站怎么做网络销售
  • 网站公安备案增加开办主体seo关键词优化外包公司
  • 美丽乡村 村级网站建设企业软文营销
  • 网站做服装那个平台好一点推广优化排名
  • 购物网站的建设毕业论文关键词排名查询
  • 公司的网站做备案我是网站负责人如果离职以后要不要负法律责任网络营销策划的目的
  • 重庆网站建设公司多少钱女生做sem专员的工作难吗
  • h网站开发百度关键词排名突然下降很多
  • 做演示的网站指数基金有哪些
  • 网站上做地图手机上显示深圳全网营销型网站
  • 合江网站建设网络市场调研的五个步骤
  • 西安建设和住房保障局网站济南seo排名优化推广
  • 山东网站建设工作室软文代写平台
  • java和php哪个更有发展前景seo快速排名软件价格