通过系统函数分配内存sbrk/sbrk
2024-10-22 08:10:07
#include <unistd.h>
#include <stdio.h>
int main(void) {
printf("================brk====================\n");
/* 以相对的方式分配内存(相对于上一次分配的结果)
* void *sbrk (intptr_t __delta)
* __delta 分配的内存大小,以字节为单位
* 如果传入 4 表示分配四个字节,如果传入-4释放四个字节
* 内存操作成功返回 调用sbrk前的堆尾指针 操作失败返回-1
* */
// 申请4个字节的内存
void *p1 = sbrk(4);
printf("%p\n", p1);
// 获取当前堆底指针
p1 = sbrk(0);
printf("%p\n", p1);
// 释放4个字节的内存
p1 = sbrk(-4);
printf("================brk====================\n");
/* 以绝对的方式分配内存
* int brk (void *__addr)
* __addr 要将堆底指针移动到的位置
* 例子
* 当前堆底指针 + 4 表示要分配四个字节的内存
* 当前堆底指针 - 4 表示要释放四个字节的内存
* 内存操作成功返回0 操作失败返回1
* */
// 获取当期堆底指针
p1 = sbrk(0);
printf("%p\n",p1);
// 分配4个字节的内存
brk(p1 + 4);
p1 = sbrk(0);
printf("%p\n",p1);
// 释放4个字节的内存
brk(p1 - 4);
p1 = sbrk(0);
printf("%p\n",p1);
return 0;
}
最新文章
- PHP异常处理函数set_exception_handler()的用法
- String 与StringBuffer的区别与使用
- JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台
- 求助:为什么我用360浏览器和UC浏览器打不开JAVA中的index.html文件? 一打开就显示浏览器首界页
- 理解 Android 本地数据存储 API
- QF——OC中的SEL类型和Block
- php利用SoapClient调用webservices
- Java解析JSON文件的方法 (二)
- Visual Studio 2017 离线安装方式
- lamp论坛搭建
- 转:【Java并发编程】之四:守护线程与线程阻塞的四种情况
- (一〇七)iPad开发之modal的切换方式与展示方式
- OAuth2.0记录
- [android]android项目的目录结构
- RPC框架原理简述:从实现一个简易RPCFramework说起(转)
- [UE4]瞬移对象
- 编写高质量代码:改善Java程序的151个建议 --[52~64]
- 自定制property
- Nginx的alias的用法及与root的区别
- 运营商DNS系统安全解决方案