c - sbrk(0) 并不总是返回相同的值
问题描述
我的任务是编写伙伴分配算法的实现。我对 C 不是很满意,而且我对指针的理解也不是很好。我正在尝试使用以下代码编写自定义内存分配器:
当我第一次尝试分配内存时,我使用以下内容:
head = sbrk(0);
printf("%p\n",sbrk(0));
sbrk(MAX_SIZE);
head = malloc(sizeof(head) + size);
head->free = false;
head->data = malloc(size);
head->size += size;
head->next = (void*)sbrk(0);
MAX_SIZE 是给定的,head 是自定义结构。一开始它是未初始化的。由于某种原因,head->next 值和开头打印的 sbrk(0) 并不总是匹配。有时它们都等于相同的值,例如:0x7e357000,但有时我的 head->next 将采用更大的值,例如:0xffffffffa4d8b000。似乎没有理由为什么这些值有时只会匹配。谁能解释一下?
解决方案
推荐阅读
- c# - Xamarin Forms LibVLC 视频未显示在发布配置中
- hyperlink - 如何让 Google 幻灯片上的超链接在同一窗口中打开?
- sonarqube - 有办法将 .isx 中的文件转换为 .dsx 吗?
- javascript - javascript同时调用多个函数
- flutter - 使用 Dio 包暂停、恢复和停止下载
- sql-server - 在数据库 SQL Server 上应用 TDE 成功,但后来显示未加密
- swift - 命令 LinkStoryboards 失败,退出代码为非零
- angular - 将数据延迟加载到 NgRX 存储中
- python - Plotly:如何用共享的 x 轴绘制多条线?
- spring-boot - 如何使用 gradle 6+ 和 java 11+ 在 Spring Boot 中配置 spock