【问题标题】:What is the program break in memory?什么是内存中的程序中断?
【发布时间】:2018-02-11 22:03:08
【问题描述】:

我正在阅读一篇关于为指针分配空间的文章,该文章没有确切说明“程序中断”是什么,但提到了它。我需要知道程序中断是什么。如果我创建一个指向内存的指针带 malloc..ie 的空间

char *ptr = (char*)malloc(100);

节目中断是开始还是结束?是 p[0] 还是 p[99] 的地址 THX

【问题讨论】:

  • “程序中断”(由brk and sbrk 控制)这些天并没有真正使用。它现在主要具有历史意义。
  • @Someprogrammerdude 除非你正在实现自己的内存分配器。

标签: c sbrk brk


【解决方案1】:

嗯,程序中断是初始化数据段的结束,因此,它通常在其他地方

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main() {
    char *ptr = (char*)malloc(100);
    printf("%p %p %p\n", ptr, ptr+100, sbrk(0));
    return 0;
}

输出:

0x744010 0x744074 0x765000

实际值取决于运行时内存分配器(又名malloc)使用的策略。

【讨论】:

  • malloc 的一些实现甚至不使用 break,而只使用 mmap
猜你喜欢
  • 2020-12-09
  • 2019-08-11
  • 2011-02-03
  • 2011-05-31
  • 2012-12-29
  • 2020-10-04
  • 2015-02-11
  • 2016-06-02
相关资源
最近更新 更多