易截截图软件、单文件、免安装、纯绿色、仅160KB

c中内存分配&变量的存储类别

一在c中分为这几个存储区
1.栈 - 由编译器自动分配释放
2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放
4.存储常量的地方。- 程序结束释放
在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有效,不能extern到别的文件用,在函数体内定义的static表示只在该函数体内有效。另外,函数中的"adgfdf"这样的字符串存放在常量区。
二变量的存储类别:
变量从作用域(空间)角度可以分为全局变量和局部变量。
而从生存期(时间)角度可以分为静态存储方式和动态存储方式
具体包括:
a)         自动的(auto)
b)        静态的(static)
c)        寄存器的(register)
d)        外部的(extern)
静态存储方式:程序运行期间由系统分配固定的存储空间的方式
动态存储方式:程序运行期间根据需要进行动态的分配存储空间方式
内存中供用户使用的存储空间:
1.         程序区
2.         静态存储区
3.         动态存储区
数据存放在后两个存储区中,
全局变量存放在静态存储区中
函数形式参数(调用时)和局部变量(未加static修饰)存放在动态存储区中,在函数调用完后会被系统自动清空。
下面我只介绍前两个:
1)        Auto:
变量如果不加static修饰变量,则都是动态的分配存储空间,系统根据需要进行分配和释放数据所占用的存储空间
2)        Static:
当我们希望局部变量在函数调用完后不被自动的清空而是保留生成的值(即它所占用的存储单元不被释放),这时static的作用就可以在这里的到体现了;
Static修饰全局变量时,改变量的作用域只限于本文件
用stat


相关文档:

【C/C++】总结常用的函数调用约定

一、函数调用的基本步骤
函数调用大致包括以下几个步骤。
(1)参数入栈:将参数从右向左依次压入系统栈中。
(2)返回地址入栈:将当前代码区调用指令的下一条指令地址压入栈中,供函数返回时继续执行。
(3)代码区跳转:处理器从当前代码区跳转到被调用函数的入口处。
(4)栈帧调整:具体包括:
保存当前栈帧状态 ......

C++接口与实现分离的2种方法 (C/C++)

方法一:使用另一个实现类分装类的私有成员和函数,这种方法称为Pimpl方法。
test.h
#pragma once
#include "shared_ptr.hpp"
class CTest
{
public:
    CTest(void);
    ~CTest(void);
    void DoSomething();
private:
& ......

【转】【C\C++语言入门篇】 数组与指针

前面两篇基本把指针给介绍完了,相信大家对指针已经不是那么陌生了。也不会因为指针和数组之间的关系而导致混淆了。大家可能也迫不及待想了解下后来的知识。今天我们就介绍下结构体。
对于结构体,既然叫结构体,形象上我们可以理解其就是一堆数据集合在一起形成一个结构。就比如一个学生的信息包括:学号、姓名、班级、年 ......

【转】【C\C++语言入门篇】 序言

之前的定位可能主要为了研究底层及一些较复杂的问题上,而忽略了一些初学的朋友。导致他们可能一进来就有点“望而生畏”的感觉(自诩了哈,拍砖!)。应怪兽群里兄弟及一些朋友的建议,同时也为了把自己的经验及编程方面的一些想法分享给大家。因此打算写一些CC++语言基础入门的博文。
从本模块中,大家可以了解 ......

c中数据类型的隐式转换

1、隐式转换
    C在以下四种情况下会进行隐式转换:
       1、算术运算式中,低类型能够转换为高类型。
       2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
       3、函 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号