程序和内存的概念
程序是指在硬盘上的可执行文件。当程序被运行时,需要将可执行文件加载到内存,在内存中的可执行文件形成进程,一个进程(文件)可以同时存在多个进程(内存)。
内存区域的划分
运行程序的时候,需要将可执行文件加载到内存中,形成进程。每个进程占据了一块独立的内存区域,这块内存区域又划分成不同的区域,从低地址到高地址依次为:代码区、只读常量区、全局区/数据区、BSS段...
分类:
系统相关 时间:
2015-06-05 10:19:27
阅读次数:
136
1.内存管理
1.1 进程中的内存区域划分
代码区 只读常理区 全局区 BSS 堆 栈
1.2 字符串存储形式之间的比较
字符指针,字符数组,字符动态内存
1.3 虚拟内存管理技术
Unix/Linux系统总的内存都是采用虚拟内存管理技术进行管理,即:每个进程都有0~4G的内存地址
(虚拟的并不是真实存在的),由操作系统负责把内存...
分类:
其他好文 时间:
2015-06-05 00:45:51
阅读次数:
125
C++的内存划分为栈区、堆区、全局区/静态区、字符串常量和代码区。 这里去掉自由存储区,增加了代码区,理由会在下面讲到。 栈区:由系统进行内存的管理。 说明:主要存放函数的参数以及局部变量。栈区由系统进行内存管理,在函数完成执行,系统自行释放栈区内存,不需要用户管理。整个程序的栈区的大小可以在编译器...
分类:
编程语言 时间:
2015-06-01 13:06:22
阅读次数:
105
1.进程使用的内存都可以按功能大致分为以下4个部分:(1)代码区:这个区域存储着被装入执行的二进制机器代码,处理器会到这个区域取指并执行。(2)数据区:用于存储全局变量等。(3)堆区:进程可以在堆区动态地请求一定大小的内存,并在用完之后还给堆区。动态分配和回收是堆区的特点。(4)栈区:用于动态地存储...
分类:
其他好文 时间:
2015-05-29 00:40:42
阅读次数:
175
在VisualStudio中,如果是C#语言,在类或方法上部输入 /// ;如果是VB.NET,输入 ''' 。就可以为类或方法生成已经设置好的注释模板。
在MyEclipse中,在需要被注释的代码区(如类或方法)上部输入 /** ,回车,就可以为类或方法生成已经设置好的注释模板。...
分类:
系统相关 时间:
2015-05-26 00:17:45
阅读次数:
215
C#多线程学习(三)生产者和消费者前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它..
分类:
编程语言 时间:
2015-05-22 19:27:40
阅读次数:
161
C/C++回调函数在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针...
分类:
编程语言 时间:
2015-05-20 22:10:36
阅读次数:
146
题目
思路
题意是说将一组数排列成另外一组数,排序的方式是每次取出3个连续的的数字,然后abc可以cab,也就整体右移,超出位置的到最左边。
问能否排列成目标数组。
额,实在是不会做。在网上找到了好几个人的题解,稍加重写并比较性能好了。
好像和树状数组有关。
如代码区所示。代码
第一种方法,用时0.9s:
by Per Austrin//Sample solution for the...
分类:
其他好文 时间:
2015-05-18 08:57:48
阅读次数:
145
内存四区:1.全局区 :常量和全局变量,操作系统管理 -- 常量 + 静态变量 2.代码区 :不可见 3.堆区 : 手工分配(开辟)内存,要是不free的话,这部分内存将被永远保留(关机之前),这就是内存泄露 4.栈区 : 程序局部变量、临时变量,以一个函数为单位 -- 变...
分类:
其他好文 时间:
2015-05-16 20:06:40
阅读次数:
115
首先得会内存、寄存器还有程序运行的规则。
存储知识:
文件地址(File Offset):数据在PE文件中的地址,文件在磁盘上存放时相对于文件开头的偏移;
虚拟内存地址:每个进程都有的4G虚拟空间;
物理内存地址;
这三个地址要层层映射
内存:
代码区:存放二进制代码
数据区:存储全局变量
堆区:动态内存空间(还没太明...
分类:
其他好文 时间:
2015-05-08 00:04:00
阅读次数:
184