
内存
文章平均质量分 74
douyuhua0918
这个作者很懒,什么都没留下…
展开
-
C/C++关于全局变量和局部变量初始化与不初始化的区别
-->本文章被观看264次 在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下: 编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化转载 2012-03-20 20:18:29 · 12302 阅读 · 1 评论 -
内存地址的计算方法
(2011-12-29 08:04)标签: 内存 计算方法 分类: C_Language内存是按字节编址的,所以单位是字节哈,1字节可是等于8位的。因为计算的范围一般比较小,所以就记住两个就够了。记住几个常用的2的10次方为1024即1KB2的20次方=(2的10次方)的平方,即1MB就行了如果要求更大的,那就再记住2的40次方=(2的10次方)的4次转载 2012-04-14 11:23:16 · 860 阅读 · 0 评论 -
认识C和内存管理
(2011-12-30 01:19)标签: 内存 分类: C_Language课程中推荐的C/C++在线学习资料:http://www.cprogramming.com 高位地址:命令行参数及环境变量stack (存放着局部变量和函数参数等数据), 向下生长 (可读可写可执行)heap (给动态分配内存是使用),转载 2012-04-14 11:24:09 · 325 阅读 · 0 评论 -
程序执行时的内存
当一个源代码通过gcc编译成a.out,执行a.out时 程序便开始了执行之旅(即进程)操作系统为进程分配堆栈空间,随后把程序执行码放入文本段,把程序经过初始化的全局变量和静态变量放入data 把程序为初始化的全局变量和静态变量放入bss段 并对bss段数据初始化为0之后cpu代码段指针指向main的入口,cpu堆栈段指针指向栈顶。代码段指针从main的入口地址顺序读取指令代码并进行执转载 2012-04-18 14:13:05 · 571 阅读 · 0 评论 -
关于C程序运行时的内存 的一些理解
学习过C语言的同学应该都知道内存是什么,以及怎么用。但是程序代码编译目标文件和可执行文件是什么格式?程序在内存里是怎么组织的呢?分为哪几个部分?堆栈有哪些具体功能?当函数调用时发生了什么?等等问题。并不一定每个人都很清楚。下面就写点我以前看书时的日记和理解。一、 首先来讲一下目标文件和可执行文件的格式不同的系统的可执行文件有不同的格式。在SVr4实现中都采用了ELF转载 2012-04-18 15:18:57 · 548 阅读 · 0 评论 -
堆栈
. 堆 (heap。软件底层原理,而非数据结构)堆位于RAM中,是一个通用的内存池,它一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。所有的对象都存储在堆中。堆是动态分配内存的,并且你可以分配使用很大的内存。但是用不好会产生内存泄漏。4. 栈 (hardware stack。软件底层原理,而非数据结构)栈存在于RAM中,它由编译器自动分配、释放。栈是动态的,它的存储转载 2012-04-18 16:21:24 · 349 阅读 · 0 评论 -
堆栈分区(5.9)
五大内存分区在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,转载 2012-05-10 15:43:53 · 507 阅读 · 0 评论 -
内存堆栈(5.11)
C语言中堆和栈的区别[日期:2012-04-05] 来源:Linux社区 作者:tigerjb 一.前言:C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如上图所示:1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方转载 2012-05-12 22:28:27 · 503 阅读 · 0 评论 -
c语言程序段分类大全
根据C语言的特点,每一个源程序生成的目标代码将包含源程序所需要表达的所有信息和功能。目标代码中各段生成情况如下:1.代码段(Code) 代码段由程序中的各个函数产生,函数的每一个语句将最终经过编译和汇编生成二进制机器代码(具体生成哪种体系结构的机器代码由编译器决定)。 ? 顺序代码 基本数学运算(+,-),逻辑运算(&&,||),位运算(&转载 2012-05-25 10:00:13 · 833 阅读 · 0 评论 -
linux内存管理-20121217
Linux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨翻译 2012-12-18 10:53:13 · 530 阅读 · 0 评论 -
程序运行时的内存结构:
第一种图示:另外一种图示:各区段功能说明: 1、程序代码区:存放函数体的二进制代码。2、全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放。3、文字常量区 :常量字符串就是放在这里的。 程序结束后由系统释放。4、堆区(转载 2012-04-13 10:03:33 · 1193 阅读 · 0 评论 -
变量存储(内存)
变量的内存分布分类: C/C++2010-05-02 16:54 40人阅读 评论(0) 收藏 举报const变量存储在.rodata(read only)区域; char* p = "abcd"; p指向的是静态文本区域.text .rodata 和 .text 被合并为一个segment,由OS保护起来,只可读。 register变量存放在.bs转载 2012-04-12 10:13:36 · 359 阅读 · 0 评论 -
数据存储
小议C语言中数据的存储类型C语言中的一些说明和定义会用到存储类型这样一个概念,在C语言中存储类型会用到下述几个关键字:auto,static,register,extern。看下面的简略图大家可以明确程序在进行存储时是分为三个区域的,分别为代码段,数据段和bss段,用于存储不同类型和状态的变量,而运行起来系统会再为其添加2个段,一个是堆,一个是栈,而我们手动进行的内存空间的申请是分配在堆区转载 2012-04-04 20:20:06 · 386 阅读 · 0 评论 -
内存模型
了解linux的 内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是 你对整个路途都很比较清楚的话,每到一个站都知道自己在哪里,知道当地的风土人情,对比一下所见所想,旅程可能更有趣一些。 类似的,了解linux的内存模型,你知道每块内存,每个变量,在系统中处于什么样的位置。这同样会让你心情愉快,知转载 2012-04-10 16:06:52 · 267 阅读 · 0 评论 -
大内高手—常见内存错误
随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。 而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,了解这些常见的错误,在编程时就加以注意转载 2012-04-10 15:46:05 · 278 阅读 · 0 评论 -
大内高手—全局内存
转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9有 人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题 虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助。因为有好几次这样转载 2012-04-11 09:51:21 · 281 阅读 · 0 评论 -
踏入C中的雷区——C 内存管理详解
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)转载 2012-04-01 10:38:40 · 315 阅读 · 0 评论 -
通过未初始化全局变量,研究BSS段和COMMON段的不同
作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net最近正在重温《程序员的自我修养》一书,由于水平比以前有所提升,所以读书的收获也不一样。下面针对该书3.3.3节BSS段的内容进行更细节的探讨——该节内容不在本文中重复说明了,只说一下结论。对于全局变量来说,如果初始化了不为0的值,那么该全局变量则被保存在da转载 2012-03-20 20:29:50 · 755 阅读 · 0 评论 -
栈内存与堆内存
一、程序在编译的时候占用的内存分为以下几个部分: 1 、栈区( stack )— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.2 、堆区( heap )— 亦称动态内存分配.程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用fre转载 2012-03-20 20:39:32 · 396 阅读 · 0 评论 -
内存
在Linux下一个进程在内存里有三部分的数据,就是"代码段"、"堆栈段"和"数据段"。"代码段",顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用相同的代码段。"堆栈段"存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。而数据段则存放程序的全局变量,常数以及动态数据分配的数据空间(比如用malloc之类的函数取得的空间)。系统如果同时运行数个转载 2012-04-10 16:32:53 · 243 阅读 · 0 评论 -
浅谈C++中内存分配、函数调用和返回值问题
浅谈C++中内存分配、函数调用和返回值问题 在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题。C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量。数据区又分为静态数据区、动态数据区以及常量区,动态数据区包括堆区和栈区。一下是各个区的作用:(1)代码区:存放程序代码;(2)转载 2012-04-12 12:05:59 · 310 阅读 · 0 评论 -
内存(2013)
出处:http://blog.youkuaiyun.com/drshenlei/article/details/4339110原文标题:Anatomy of a Program in Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 内存转载 2013-02-03 22:57:07 · 676 阅读 · 0 评论