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

Linux中的内存管理

一.在Linux操作系统的内存中共有五块空间:代码段,数据段,BBS段,堆和栈
代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存种的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作——它是不可写的。
 
数据段:数据段用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配[1]的变量和全局变量。
 
BSS段[2]:BSS段包含了程序中未初始化全局变量,在内存中 bss段全部置零。
 
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
 
栈:栈是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味这在数据段中存放变量)。除此以外在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也回被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上将我们可以把堆栈看成一个临时数据寄存、交换的内存区。
二. 下老师布置的程序:
#include<stdio.h>
#include<malloc.h>
#include<unistd.h> //it contains sbrk() and brk()
int bss_var;
int data_var0 = 0;
int main(int argc,char **argy){
printf("below are addresses of types's menory\n");
printf("Text location:\n");
printf("\tAddress of main(Code Segement):%p\n",main);//fuction name is a pointer
int stack_var0 = 2;
printf("Stack Location:\n");
printf("\tInitial of stack:%p\n",&stack_var0);
int stack_var1 = 3;
printf("\tnew end of stack:%p\n",&stack_var1);
printf("Data Location:\n");
printf("\tAddress of data_var(Data Segement):%p\n",&data_var0);
static int data_var1 = 4;
printf("\tNew address of data_var(Data Segement):%p\n",&data_var1);
printf("BSS Locatin\n");
printf("\tAddress of bss_var:%p\n",&bss_var);
char *b = sbrk((ptrdiff_t)0);
printf("Heap Location :\n");
printf("\tInitial end


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

Linux 释放内存方法


Linux 释放内存方法
先看看内存使用状况
[root@node1 ~]# free -m
total used free shared buffers cached
Mem: 8004 6557 1446 0 163 5630
-/+ buffers/cache: 763 7240
Swap: 1983 0 1983
把内存里的数据暂时写到硬盘里
[root@node1 ~]# sync
修改 /proc/sys/vm/drop_caches文件
[root@node1 ~]# echo 3 > ......

cin EOF Linux

 我为什么写这个题目呢,因为我今天要写的博与这三者都有关系,至少我个人认为是这样的。
有个人问了一个这样的小程序,说有问题:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector <string*> spvec;
string str;
cout & ......

linux 进程 状态

http://blog.csdn.net/zengyang/archive/2009/01/07/3725320.aspx
http://tech.ccidnet.com/art/305/20071226/1322187_1.html 
State 
进程在执行过程中会根据环境来改变state。Linux进程有以下状态: 
 
Running 
进程处于运行(它是系统的当前进程)或者准备运行状态(它在等待系统将CPU分配给它) ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号