草庐IT

malloced

全部标签

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

我在AdvancedUnixProgramming(以及其他几本书)中读到Linuxmalloc()使用Linux系统调用sbrk()来请求内存操作系统。我正在查看glibcmalloc.c代码,我可以在注释中看到很多提及sbrk()的地方,但没有在代码中直接提及。malloc()从操作系统请求内存时,如何/在哪里引用/使用sbrk()?(这可能是我对如何从C运行时库进行系统调用的普遍误解。如果是这样,我很想知道它们是如何进行的??) 最佳答案 Glibc的malloc.c通过调用存储在__morecore全局函数指针中的函数来请求

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

我在AdvancedUnixProgramming(以及其他几本书)中读到Linuxmalloc()使用Linux系统调用sbrk()来请求内存操作系统。我正在查看glibcmalloc.c代码,我可以在注释中看到很多提及sbrk()的地方,但没有在代码中直接提及。malloc()从操作系统请求内存时,如何/在哪里引用/使用sbrk()?(这可能是我对如何从C运行时库进行系统调用的普遍误解。如果是这样,我很想知道它们是如何进行的??) 最佳答案 Glibc的malloc.c通过调用存储在__morecore全局函数指针中的函数来请求

c - Linux 上的 Malloc 没有过度使用

我如何在Linux上分配内存而不过度使用,以便malloc在没有可用内存且进程不会在访问时随机崩溃时实际返回NULL?我对malloc工作原理的理解:分配器检查空闲列表是否有空闲内存。如果是,则分配内存。如果否,则从内核分配新页面。这就是过度使用可能发生的地方。然后返回新的内存。因此,如果有一种方法可以从内核中获取由物理内存立即支持的内存,分配器可以使用它而不是过度使用页面,如果内核拒绝提供,则返回NULL更多内存。有没有办法做到这一点?更新:我知道这不能完全保护进程免受OOMkiller的攻击,因为如果它的分数不好,它仍然会在内存不足的情况下被杀死,但这不是我担心的。更新2:Nomi

c - Linux 上的 Malloc 没有过度使用

我如何在Linux上分配内存而不过度使用,以便malloc在没有可用内存且进程不会在访问时随机崩溃时实际返回NULL?我对malloc工作原理的理解:分配器检查空闲列表是否有空闲内存。如果是,则分配内存。如果否,则从内核分配新页面。这就是过度使用可能发生的地方。然后返回新的内存。因此,如果有一种方法可以从内核中获取由物理内存立即支持的内存,分配器可以使用它而不是过度使用页面,如果内核拒绝提供,则返回NULL更多内存。有没有办法做到这一点?更新:我知道这不能完全保护进程免受OOMkiller的攻击,因为如果它的分数不好,它仍然会在内存不足的情况下被杀死,但这不是我担心的。更新2:Nomi

linux - 你能推荐一个很好的 linux 调试 malloc 库吗?

你能推荐一个很好的linux调试malloc库吗?我知道那里有很多选择,我只需要知道人们实际使用哪些库来解决现实生活中的问题。谢谢!编辑:我知道Valgrind,但有时性能真的太低了。 最佳答案 Valgrind.:-)它不是malloc库,但是,它非常擅长查找内存管理和内存使用错误。 关于linux-你能推荐一个很好的linux调试malloc库吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

linux - 你能推荐一个很好的 linux 调试 malloc 库吗?

你能推荐一个很好的linux调试malloc库吗?我知道那里有很多选择,我只需要知道人们实际使用哪些库来解决现实生活中的问题。谢谢!编辑:我知道Valgrind,但有时性能真的太低了。 最佳答案 Valgrind.:-)它不是malloc库,但是,它非常擅长查找内存管理和内存使用错误。 关于linux-你能推荐一个很好的linux调试malloc库吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

c - malloc(及其同类)返回的内存块是否初始化为零?

我写了一个代码来测试压力测试Linux和Windows操作系统的内存管理。为了进一步测试,我继续检查malloc()返回的内存中存在哪些值。返回的值都是0(零)。我已经阅读了malloc的手册页,在Windows和Linux上都进行了检查,但是我无法找出这种行为的原因。根据联机帮助页Themalloc()functionallocatessizebytesandreturnsapointertotheallocatedmemory.Thememoryisnotinitialized.要清除内存段,必须手动使用memset()。#include#include#include#inclu

c - malloc(及其同类)返回的内存块是否初始化为零?

我写了一个代码来测试压力测试Linux和Windows操作系统的内存管理。为了进一步测试,我继续检查malloc()返回的内存中存在哪些值。返回的值都是0(零)。我已经阅读了malloc的手册页,在Windows和Linux上都进行了检查,但是我无法找出这种行为的原因。根据联机帮助页Themalloc()functionallocatessizebytesandreturnsapointertotheallocatedmemory.Thememoryisnotinitialized.要清除内存段,必须手动使用memset()。#include#include#include#inclu

c - SECCOMP:如何模拟 malloc、realloc 和 free?

我想在我的服务器上执行任意(有潜在危险的)二进制文件。因此,我使用objcopy将“main”符号重命名为“other_main”,这样我就可以链接到我自己的小main函数中,该函数为RLIMIT_CPU设置适当的值,并且切换SECCOMP在调用other_main之前标记。到目前为止,我对这个解决方案非常满意。现在的问题是,第3方程序代码可能包含对malloc的一些调用,这可能会立即终止程序(不允许使用sbrk)。因此,我想在设置应该由malloc/realloc/calloc/free使用的SECCOMP之前预先分配一些合理大小的数组(例如20MB)。不幸的是,我不知道如何存档最后

c - SECCOMP:如何模拟 malloc、realloc 和 free?

我想在我的服务器上执行任意(有潜在危险的)二进制文件。因此,我使用objcopy将“main”符号重命名为“other_main”,这样我就可以链接到我自己的小main函数中,该函数为RLIMIT_CPU设置适当的值,并且切换SECCOMP在调用other_main之前标记。到目前为止,我对这个解决方案非常满意。现在的问题是,第3方程序代码可能包含对malloc的一些调用,这可能会立即终止程序(不允许使用sbrk)。因此,我想在设置应该由malloc/realloc/calloc/free使用的SECCOMP之前预先分配一些合理大小的数组(例如20MB)。不幸的是,我不知道如何存档最后