栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

用C语言编写一个申请内存的程序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用C语言编写一个申请内存的程序

虚拟内存与实际内存

虚拟内存指的是,程序向操作系统所申请的内存空间,这个空间不一定会使用,这个空间也可以比服务器实际可提供内存空间大。

实际内存是程序所申请的内存页与物理内存中的物理页进行一一映射的内存空间,这个空间永远不会比物理内存大。

C语言内存空间分配函malloc()数简介.

调用形式:
(类型说明符*)malloc(size)
功能:在内存的动态存储区中分配一块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。
说明:
(1)“类型说明符”表示把该区域用于何种数据类型。
(2)(类型说明符*)表示把返回值强制转换为该类型指针。
(3)“size”是一个无符号数。
例如:
pc=(char*)malloc(100);
表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。

编程实现虚拟内存分配
#include     
#include     

int main(int argc, char const *argv[])
{
    int *p;
    p=(int *)malloc(8000000000); 

    sleep(90);
    return 0;
}
编译运行此程序并查看此进程内存占用情况
[zyq@zyq ~]$ ps aux | grep a.out
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
zyq      19931  0.0  0.0 7816672  348 pts/2    S+   15:46   0:00 ./a.out
zyq      19935  0.0  0.0   9044   664 pts/0    S+   15:46   0:00 grep --color=auto a.out

VSZ代表虚拟内存,单位K,RSS为真实内存,单位K。

结论

通过实验可以发现程序申请了8000000000/1024=7.812500G的虚拟地址空间,和展示的7816672 基本吻合,剩余的部分(7.816672-7.812500)是进程加载别的内容所申请的内存空间。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号