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

手机如何自己编程做游戏西安seo排名

手机如何自己编程做游戏,西安seo排名,wordpress 跟随滚动,网站建设服务费如何做会计分录一、基本概念 C语言中,变量都是有一定的生存周期的,所谓生存周期指的是从分配到释放的时间间隔。为变量分配内存相当于变量的诞生,释放其内存相当于变量的死亡。从诞生到死亡就是一个变量的生命周期。 根据定义方式的不同,变量的…

一、基本概念

        C语言中,变量都是有一定的生存周期的,所谓生存周期指的是从分配到释放的时间间隔。为变量分配内存相当于变量的诞生,释放其内存相当于变量的死亡。从诞生到死亡就是一个变量的生命周期。

根据定义方式的不同,变量的生命周期有三种形式:

1. 自动存储期 --- 函数死,变量就死

2. 静态存储期 --- 程序死,变量才死(普通函数死它不会死(除了main函数))

3. 自定义存储期 --- 程序员让它死,它才死(或者程序死了,它才死) ---- 君要臣死,臣不得不死

不同存储区段对应不同存储期

解析:

自动存储期(栈区): 主要矛盾,注意内存分配不要过大

自定义存储期(堆区): 主要矛盾,申请的内存资源,需要及时释放,否则会造成内存泄漏

静态存储期(数据段): 主要矛盾,数据段的数据(比如全局变量)尽量不要太多

二、自动存储期

在栈内存中分配的变量,通通拥有自动存储期,因此也都被称为自动变量。这里自动的含义,指的是这些变量的内存管理不需要开发者操心,都是全自动的:在变量定义处自动分配,出了变量的作用域后自动释放。

  • 以下三个概念是等价的:
    • 自动变量:从存储期的角度,描述变量的时间特性。
    • 临时变量:同上。
    • 局部变量:从作用域的角度,描述变量的空间特性。

可以统一把它们称为栈变量,下面是示例代码:

  • 示例代码:
#include <stdio.h>
// 普通函数(栈内存不能超过1MB, 所以建议使用堆空间)
int func(int a, int b)      
{char buf[1024*1005] = {0};   return a+b;
}// 主函数
int main(int argc, char const *argv[])   // 主函数的栈内存不要超过8MB否则会爆内存
{// (1)、自动存储期  --- 出了花括号{}限定的范围,就死int num1 = 100;         // main函数死了,就死int num2 = 200;         // main函数死了,就死// 1、在变量定义处自动分配,出了变量的作用域后自动释放if (num1<200){char buf1[1024*1024*7] = {0};   // 只要出了外面的花括号{},就死(内存被系统释放了)}{char buf1[1024*1024*7] = {0};   // 只要出了外面的花括号{},就死(内存被系统释放了)}// 2、调用函数int ret = func(100, 200);           // 普通函数的栈内存,最好不要超过1MB否则会爆内存printf("ret == %d\n", ret);return 0;
}

三、静态存储期

在数据段中分配的变量,通通拥有静态存储期,因此也都被称为静态变量。这里静态的含义,指的是这些变量的不会因为程序的运行而发生临时性的分配和释放,它们的生命周期是恒定的,跟整个程序一致。

  • 静态变量包含:
    • 全局变量:不管加不加 static,任何全局变量都是静态变量。
    • static 型局部变量。
  • 注意1:
    • 若定义时未初始化,则系统会将所有的静态数据自动初始化为0
    • 静态数据初始化语句,只会执行一遍。
    • 静态数据从程序开始运行时便已存在,直到程序退出时才释放。
  • 注意2:
    • static修饰局部变量:使之由栈内存临时数据,变成了静态数据。
    • static修饰全局变量:使之由各文件可见的静态数据,变成了本文件可见的静态数据。
  • 示例代码:
#include <stdio.h>// 2、普通全局变量、静态全局变量
int num5;               // 数据段中的bss区域, 全局变量,整个工程的文件都可以访问它
int num6 = 600;         // 数据段中的data区域, 全局变量,整个工程的文件都可以访问它
static int num7;        // 数据段中的bss区域, 静态全局变量,本文件可见,工程里面的其它文件不可见
static int num8 = 800;  // 数据段中的data区域, 静态全局变量,本文件可见,工程里面的其它文件不可见// 主函数
int main(int argc, char const *argv[])   
{ // 1、静态局部变量static int num3;                    // 数据段中的bss区域, static局部变量,本函数可见static int num4 = 400;              // 数据段中的data区域, static局部变量,本函数可见
}

四、自定义存储期

在堆中分配的变量,统统拥有自定义存储期,也就是说这些变量的分配和释放,都是由开发者自己决定的。由于堆内存拥有高度自治权,因此堆是程序开发中用得最多的一片区域。

自由的堆内存

  • 相关API:
    • 申请堆内存:malloc() / calloc()
    • 清零堆内存:bzero()
    • 释放堆内存:free()

  • 注意:
    • malloc()申请的堆内存,默认情况下是随机值,一般需要用 bzero() 来清零。
    • calloc()申请的堆内存,默认情况下是已经清零了的,不需要再清零。
    • free()只能释放堆内存,不能释放别的区段的内存。
  • 释放内存的含义:
    • 释放内存意味着将内存的使用权归还给系统。
    • 释放内存并不会改变指针的指向。
    • 释放内存并不会对内存做任何修改,更不会将内存清零。(看情况)
  • 示例代码:
#include <stdio.h>
int main(int argc, char const *argv[])  
{char *p = malloc(100);              // 程序员需要使用free函数去杀了它(释放它),否则其内存会一直存在(也就是会造成内存泄漏),直到程序结束为止bzero(p, 100);free(p);return 0;
}

至此,希望看完这篇文章的你有所收获,我是Bardb,译音八分贝,道友,下期见!

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

相关文章:

  • asp.net p2p网站开发郑州seo技术博客
  • wordpress 异常怎么优化网站排名才能起来
  • 国外做兼职网站设计广东优化疫情防控措施
  • 单县做网站域名官网
  • 触屏网站建设产品营销推广方案
  • 网站开发程序开发优化设计
  • 用脚手架如何搭建项目做网站北京网络营销招聘
  • 龙岩淘宝设计西安seo
  • 做网站服务器配置怎么选网站建设公司地址在哪
  • wordpress站点标题隐藏seo发包排名软件
  • 装修公司网站用的织梦it培训机构怎么样
  • 显示浏览次数 single wordpress关键词优化排名软件
  • 怎样给一个公司做网站目前较好的crm系统
  • 微网站自己怎么做徐州网站关键词排名
  • wordpress 忘记密码页面seo 专业
  • php做网站标题加链接网络营销与策划实践报告
  • 石家庄市城乡建设学校网站阿里指数查询官网
  • 桂林论坛网网站电话百度指数在线查询
  • 做网站需要了解的知识互联网销售公司
  • 做网站卖仿品腾讯企业qq
  • 网站济南网站建设站长工具大全
  • 网站建设策划案怎么写百度pc端首页
  • 青岛网站建设最便宜网络营销最基本的应用方式是什么
  • 做网站的公司有多少家教育培训机构加盟
  • 动态网站建设实训总结免费的域名和网站
  • 趣味测试网站开发需求关键词优化工具互点
  • 南宁商城网站建设百度网盘下载速度
  • 做网站499企业关键词排名优化网址
  • 菠菜网站怎么做推广比较好班级优化大师app下载
  • 福州网站建设市场网络营销人员招聘