Linux下进程的内存结构

来源:互联网 发布:阿里云怎么绑定支付宝 编辑:程序博客网 时间:2024/05/22 13:50

一、Linux下进程的内存结构

        Linux操作系统采用虚拟存储技术,使得每个进程都有独立的地址空间。该地址在32位系统下是大小为4GB的线性虚拟空间,用户看到和接触到的都是该虚拟地址,无法看到实际的物理内存地址。Linux系统下进程地址空间分别如图所示:

        在.text区域,用户不具有读写权限。.rodata区域为只读区域,常常用于存储字符串常量,.data区域为可读可写,常常分配给全局变量及静态变量。在实际的应用中,程序员可以使用的空间只有.data、堆、栈三个区域,栈区主要分配给局部变量,当程序执行过程中需要才分配,在C语言中,执行到分配后的下一个}时即销毁该局部变量。

例:

while(){    int a;}

当执行while结束后局部变量a即被销毁。

        当程序元员需要临时开辟一片内存空间时,可以使用malloc函数向操作系统申请内存空间,这是申请的内存空间即为堆区。使用malloc函数后记得使用free销毁变量空间,以防内存泄漏。

Linux下编程,只有充分理解虚拟进程地址的空间分布,才能很好的进行开发,如果访问了非法空间,就会造成段错误。

 

二、Linux系统下编程中,如果使用math.h头文件,则编译时需要使用-lm选项,否则编译不过。

 

三、printf函数的新认识

        printf函数输出字符串时,当输出字符达到一定量时才会进行输出,或者遇见换行或者程序运行结束后才会输出。

int main(){    printf(“hello world!”);    while(1); return 0;}

这个程序运行后不会输出hello world

 

int main(){    while(1)    printf(“hello world!”);     return 0;}

这样程序运行后可以输出很多hello world

 

int main(){    while(1)   {        printf(“hello world!”);      sleep(1);    }     return 0;}

这样程序运行后会一次输出很多个hello world!而不是一次输入一个hello world

 

int main(){    printf(“hello world!\n”);    while(1);     return 0;}

这个程序即可正常输出hello world

       其实printf函数在输出的时候,会将输出的内容放进一个缓冲区中,当这个缓冲区满了才会输出到标准输出中,当遇见换行时即可强制输出,因此我们在使用printf时应该养成加上\n的习惯。

 

四、作业

1.编写一个函数实现输出整型一维数组。

<span style="font-size:18px;">#include<stdio.h>int printf_array_int(int len,const int *p){    int i;    for(i = 0;i < len;i++)        printf("%d ",*(p+i));    printf("\n");    return 0;}int main(){    int a[10] = {1,2,3,4,5,6,7,8,9,10};    printf_array_int(10,a);    return 0;}</span>

2.编写一个函数实现输出整型二维数组。
#include<stdio.h>void printf_array_int_2(int row,int col,const int *p){    int i,j;    for(i = 0;i < row;i++)        for(j = 0;j < col;j++)            printf("%d ",*(p + col*i + j));    printf("\n");}int main(){    int a[3][3] = {1,2,3,4,5,6,7,8,9};    printf_array_int_2(3,3,a);    return 0;}

 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝店上的供货商不发货怎么办 在淘宝买的花退到卖家后死了怎么办 在淘宝买东西付款开通了花呗怎么办 淘宝网投诉卖家也不处理问题怎么办 淘宝图片空间上传不了大图片怎么办 不小心把设置里打印机删掉了怎么办 电脑上qq不小心删掉了怎么办 进了一批款式不好卖的衣服怎么办? 淘宝首页图片不居中代码装的怎么办 小语言代码装修以后不是全屏怎么办 招教年龄超过4个月怎么办 淘宝上注册的店铺被别人用了怎么办 淘宝贷款后店铺转让了贷款怎么办 手机千牛发布宝贝类目找不到怎么办 亚马逊被移除销售权该怎么办 玉米煮水不够熟吃了怎么办 华为云手机找回关了找回手机怎么办 我的淘宝号被别人盗用开店怎么办 淘宝买东西发货了不想要了怎么办 两张单号一样罚款已被处理怎么办 58同城登录电话换了怎么办 在超市买的东西坏了怎么办 安卓系统无法安装第三方软件怎么办 金立手机报毒不能安装软件怎么办 js中下拉菜单被图片挡住怎么办 更换主机后用户名跟密码忘了怎么办 换手机号了京东账号登录不上怎么办 口令卡绑定时访问页面找不回怎么办 手机淘宝购物车不小心删除了怎么办 上淘宝网图片文字不清晰怎么办 淘宝店铺低消费人群占比多怎么办 微信只能在应用商城里面打开怎么办 淘宝买了特价商品店家不发货怎么办 红米5a装不下卡怎么办 红米3s流量太慢怎么办 红米3s触屏失灵怎么办 红米note的4g信号差怎么办 电信4g网速慢怎么办红米手机 红米3电信4g信号不好怎么办 红米note3无法连接4g怎么办 红米2a手机开不了机怎么办