问题标签 [sbrk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
342 浏览

posix - 使用 brk 获取 brk_start

int brk(void *end_data_segment) 手册;说:“brk() 将数据段的结尾设置为 end_data_segment 指定的值”

成功时返回 0,否则返回 -1。

但是如何获得我的中断的初始值(如 sbrk(0))?

此致,

0 投票
2 回答
13093 浏览

malloc - “malloc_trim(0)”到底是什么意思?

手册页告诉了我很多,通过它我知道了很多“glibc”内存管理的背景知识。

但我仍然感到困惑。“ malloc_trim(0) ”(注意零作为参数)是否意味着(1.)“堆”部分中的所有内存都将返回给操作系统?或者(2.)只是堆的最顶部区域的所有“未使用”内存都将返回给操作系统?

如果答案是 ( 1. ),如果堆中仍然使用的内存怎么办?如果堆在某个地方使用了内存,它们会被消除,还是函数无法成功执行?

如果答案是(2.),那么那些“空洞”在位置而不是堆顶部呢?它们不再是未使用的内存,但堆的最顶部区域仍在使用,这个调用会有效吗?

谢谢。

0 投票
0 回答
1300 浏览

arduino - Atmel Studio 6.1 中的 Arduino 到期。没有 Visualmikro

我更喜欢来自http://www.engblaze.com/tutorial-using-atmel-studio-6-with-arduino-projects/的教程而不是 Visualmikro,因为我喜欢能够跳入 arduino 函数并修改它们而不必安装任何类型的插件。

我尝试按照教程编译我的项目,但它不起作用:“未定义对 _sbrk 的引用”。对我来说,这听起来像是一个非常糟糕的链接器错误?

我需要修改一些内容,因为本教程是为旧版本的 IDE 编写的,并且针对的是 AVR 而不是 SAM:

GNU C++/符号

  • 项目清单
  • F_CPU = 84000000L
  • 阿杜诺=154

GNU C++/目录

  • [...]\Arduino\硬件\arduino\sam\cores\arduino
  • [...]\Arduino\hardware\arduino\sam\variants\arduino_due_x (不得不改变这个)
  • [...]\Arduino\硬件\arduino\sam\system\libsam

ARM/GNU 链接器/库

  • libcoreDue.a(我添加了 Due,以便能够识别 arduino 的类型)
  • libsam_sam3x8e_gcc_rel_a
  • 以及这两个文件的路径。

知道我可能错过了什么吗?

太感谢了!

0 投票
1 回答
2025 浏览

c - 在 malloc.c 中如何/在哪里使用 sbrk?

我在 Advanced Unix Programming(以及其他几本书)中读到 Linuxmalloc()使用 Linux 系统调用sbrk()从操作系统请求内存。

我正在查看 glibcmalloc.c代码,我可以在评论中看到很多提及sbrk(),但在代码中没有直接提及。

从操作系统请求内存时如何/在哪里sbrk()引用/使用?malloc()

(这可能是我对如何从 C 运行时库进行系统调用的普遍误解。如果是这样,我很想知道它们是如何进行的??)

0 投票
2 回答
683 浏览

c - C: sbrk() 地址是升序还是降序?

当 sbrk() 返回指向堆开始地址的指针时,地址是升序还是降序?例如,如果我有一个从地址 1 到 10 的 10 字节堆,那么 sbrk() 会返回指向地址 10 还是 1 的指针?

类似地,堆地址趋于“向下”增长......但我如何才能确定我的计算机上的地址是增加还是减少?

0 投票
1 回答
1447 浏览

c - sbrk(0) 会失败吗?

我想知道是否有人已经看到 sbrk(0) 失败?

我的意思是,如果你能达到这个功能,你显然之前有权访问内存,所以检查当前的中断位置应该没问题,对吧?

编辑:例如,我应该考虑错误异常吗?

0 投票
1 回答
1705 浏览

c - 使用 valgrind 检查内存分配

编写我自己的 malloc() 版本(和他最好的朋友 free() 先生),我需要知道我是否正确地释放了我的记忆。似乎我不能使用 valgrind,因为它会检查 libc'malloc,而我的位于加载了 LD_PRELOAD 的共享库中。

目前,如果我使用 valgrind,它会显示“0alloc 0free 0leak,一切都很好”,因为它没有检测到我对我的 malloc 所做的分配。(我使用 (s)brk() 函数)

有人知道是否有办法检查 valgrind 或其他东西吗?

谢谢 !

0 投票
1 回答
10510 浏览

mips - 使用 sbrk 的 MIPS 动态内存分配

我试图sbrk用于动态内存分配。但是,作为 SPIM 和 MIPS 的新手,我无法这样做。我草拟了一个粗略的代码。

0 投票
1 回答
31213 浏览

c - 将指针转换为 int

我正在为任务编写自己的函数,mallocfree在 C 中编写函数。我需要利用 Csbrk()包装函数。据我了解sbrk(),程序的数据空间增加了作为参数传递的字节数,并指向程序中断的位置。

如果我有以下代码片段:

#define BLOCK_SIZE 20

int x;

x = (int)sbrk(BLOCK_SIZE + 4);

我得到编译器错误warning: cast from pointer to integer of different size。为什么会这样,无论如何我可以将指向的地址转换sbrk()为一个int

0 投票
4 回答
2758 浏览

c - sbrk 和负参数

使用 sbrk 释放内存时遇到问题。我通过 sbrk 一个负值,但它不会减少堆的开始。这是代码

这是示例输出:

0x10734f000

0x10734f002

我不明白为什么在 sbrk 减一后打印的值没有返回为 0x10734f001 。

我不允许在这个程序中使用 malloc。这是使用 sbrk 的 malloc 和 free 的自定义实现