加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 用户进程内存空间详解

发布时间:2016-10-28 06:49:38 所属栏目:Linux 来源:网络整理
导读:常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。 VIRT, Virtual Image (kb) RES, Resident size (kb) SHR, Shared

PS:函数get_str_1()返回Stack段数据,编译时会报错。Heap中的数据,如果不用了,应该尽早释放free()。

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
       
char data_var  = '1';  
char *mem_killer()  
{  
   char *p;  
   p = (char *)malloc(1024*1024*4);  
   memset(p, '', 1024*1024*4);  
   p = &data_var;   //危险,内存泄露  
   return p;  
}  
       
int main(int argc, char *argv[])  
{  
    char *p;  
    for (;;)  
    {  
        p = mem_killer(); // 函数中malloc()分配的内存没办法free()  
        printf("%cn", *p);  
        sleep(20);  
    }  
    return 0;  
}

PS:使用malloc(),特别要留意heap段中的内存不用时,尽早手工free()。通过top输出的VIRT和RES两值来观察进程占用VM和RAM大小。

本节结束之前,介绍工具size。因为Text, BSS, Data段在编译时已经决定了进程将占用多少VM。可以通过size,知道这些信息。

# gcc example_2_3.c -o example_2_3  
# size example_2_3  
text     data    bss    dec hex filename  
1403    272  8  1683    693 example_2_3

Linux 用户进程内存空间详解

本文URL地址:http://www.bianceng.cn/OS/Linux/201410/45418.htm

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读