v_ae 2017-09-22 09:43
浏览 466

Linux下sbrk分配内存的问题

sbrk的声明原型:void sbrk(intptr_t increment);
该函数分配内存是按照increment大小分配,不足4k(4096)字节按一页算(4k),
并且映射到物理内存。
以下是代码:(就是直接的打印内存地址)
#include
#include
void maps()
{
printf("查看/proc/%u/maps\n", getpid());
getchar();
}
void main()
{
void
p1 = sbrk(4);
printf("p1=%p\n", p1);
void* p2 = sbrk(4);
printf("p2=%p\n", p2);
void* p3 = sbrk(4);
printf("p3=%p\n", p3);
void* p4 = sbrk(4);
printf("p4=%p\n", p4);
void* p5 = sbrk(4);
printf("p5=%p\n", p5);

maps();

}
图片说明

为什么分配了23 * 4k(23页)个字节

64位机版本信息:Linux version 4.4.0-64-generic (buildd@lgw01-56) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #85-Ubuntu SMP Mon Feb 20 11:50:30 UTC 2017

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试,帮帮忙吧
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建