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>
#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;}
- Linux下进程的内存结构
- Linux进程的内存结构
- 进程的内存结构
- Linux下进程内存的布局
- linux进程存储管理--进程内存结构
- linux进程存储管理--进程内存结构
- linux进程存储管理--进程内存结构
- 20151029 内存结构,进程结构,Linux解压
- linux下c程序的存储结构和进程结构
- Linux下进程内存空间组成/进程的内存映像
- Linux下的进程控制块task_struct结构体
- linux下的进程描述符task_struct 结构体认识
- Linux下进程的内存相关信息的查看
- Linux下的进程2——进程的内存映像,进程PCB,task_struct详解
- linux下查看最消耗CPU、内存的进程
- linux下查看最消耗CPU、内存的进程
- linux下查看最消耗CPU、内存的进程
- Linux系统下进程内存映像信息的理解:
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 我的jenkins自动部署方案演进史(插件和自定义脚本)
- LintCode - Merge Two Sorted List
- hdoj 1869 六度分离 【判断任意点最短路是否小于等于7】
- 小贝_mysql优化学习
- Linux下进程的内存结构
- 字典树
- 19-24 周记 总结
- 一起talk C栗子吧(第二十二回:C语言实例--队列一)
- c++中写udp编程
- 虚函数与虚继承寻踪
- PS的简单使用
- MYsql的length的函数 strim
- window7系统重装