memory-management相关内容

MMAP VS SBRK,性能比较

哪个这些调用的平均为快?我听说MMAP是较小的分配速度更快,但我还没有听说过的任何比较。对这些性能的任何信息就好了。 解决方案 您应该用特殊的实现(如的Linux )标签,这一点,因为答案肯定通过实施不同而不同。现在我假设的Linux,因为它是最流行的。 随着中说, BRK 在理论上更加优化的,并在实践运行我的机器上快10%左右。分配一个页面,这些都是我得到的时间: BRK :分钟 ..
发布时间:2016-08-21 20:05:31 C/C++

在BSS和数据段整型变量大小

我使用的是测试程序在Linux 6.3理解I2C存储器模型籽粒版本2.6.32-279.el6.x86_64。 首先,我有以下编译code, 的#include<&stdio.h中GT; INT主要(无效) { 静态INT I = 100;存储在DS / *初始化静态变量* / 返回0; } 上运行size命令,下面我得到的, [根@ rachitjain jan14 ..
发布时间:2016-08-21 20:04:24 服务器开发

Linux的堆结构和malloc()和自由()的行为

我有一个Linux 2.6内核Debian的,我试着去理解与如何堆工程/行为的malloc()和免费( )。我试图寻找的malloc()和免费()算法和堆结构,但我无法找到任何东西很有帮助。不幸的是,我知道得少Linux和记忆是如何工作的,了解的免费()和的malloc()。 这是一个例子code: INT主(INT ARGC,字符** argv的) { 字符* A,* B,* C; ..
发布时间:2016-08-21 20:04:18 服务器开发

C:内存池库?

我需要一些快速的,线程安全的内存池库。 我GOOGLE了很多,但快速的解决方案不具备线程安全的,而有些则是非常大的。 有什么建议? 解决方案 这两个nedmalloc和ptmalloc都是基于C线程缓存的内存管理器,根据各地Doug Lea的malloc的(大多数Linux分配器的核心)。他们都是在良好的许可证为好,不像储备,这就需要用于商业用途支付,最后我看了。谷歌tcmalloc也 ..
发布时间:2016-08-21 20:00:15 C/C++

基准用于测试C和C ++分配器?

请上用于测试的C和C ++分配基准请告知?满足以下任一基准方面考虑: 速度 碎片 并发 谢谢! 解决方案 如果你问一个C / C ++程序的一般分配器然后我发现本文中的囤地:一个可扩展的内存分配器为它认为这个问题多线程应用。这是引自本文件 有是因为还没有标准套房 基准评估 多线程分配器。我们知道的 没有基准,明确强调 服务器多线程性能 应用,如Web服务器和 ..
发布时间:2016-08-21 19:55:50 C/C++开发

实现自己的内存池

我要安排一定量的内存前期和使用,内存为程序的其余部分。该方案将基本上被几个字符串和结构分配内存。如何实现这一点?什么数据结构是用来存储指针和我怎么用它来给我一个具体数额? 例如,如果我的malloc 1 MB的空间,有它在一个指针 P ,我怎么能开出从它250 KB片? 这只是意味着是一个快速和肮脏的执行情况。 解决方案 如果您希望能够内存返回到池中,它变得更加复杂。然而,对于快速和不 ..
发布时间:2016-08-21 19:54:02 C/C++

调试内存泄漏问题,而没有任何工具

记者? - 如果你没有工具来检查你将如何检测内存泄漏问题 答案 - 我会读code,看看是否所有我所分配的内存已经在$ C $被释放由我C本身。 记者并不满​​足。是否有任何其他的方式来做到这一点? 解决方案 对于所有下面定义的实现,需要写的malloc ()及包装; 免费()函数。 为了简单起见,不断的malloc计数()及跟踪;自由()。如果没有,那么等于你有一个内存泄漏。 ..
发布时间:2016-08-19 16:32:46 C/C++

的/ proc / [PID] / pagemaps和的/ proc / [PID] /地图| Linux的

我试图让我的头在标题中提到的两个文件左右。 我抬起头位是什么;不过,我没有理解如何从中提取有用的信息(或者我只是接近了错误的方式)。 让我来解释一下:本pagemaps是一个相当新的“功能”伪包含分配给电流[PID]虚拟页的物理帧信息文件。也就是说,给定一个虚拟页面起始地址为X,说'增值'的虚拟地址开始,我可以利用指数输精管得到映射的物理页面框架的64位的页映射文件。这些位包含有关虚拟页的信息 ..
发布时间:2016-08-19 16:25:09 服务器开发

为什么在函数malloc内存和可用它外面是一个坏主意?

如果这是一个坏主意,如何在功能分配内存? 解决方案 这不是一个“坏主意”,而是“有时一个坏主意”,它可以对编程很多想法可说的。 分配在函数内部存储器和外部释放它可以是普通的设计图案,通过的方式。试想一下: //哈希表是一个typedef-ED指针类型 哈希表HT = hashtable_new(); // ..做一些哈希表 hashtable_free(HT); HT 函数中 ..
发布时间:2016-08-19 16:24:36 C/C++

是释放calloc(4,6)一样释放calloc(6,4)?

我是一个初学者C程序员,我认为这将是如此,但想了一些肯定,如果可能的。 如果他们是一样的,为什么不采取一个参数呢? 解决方案 这是一样的。究其原因是因为大多数的时候你希望使用的sizeof 运营商作为参数之一。如果传递两个参数打扰你了,叫的malloc()里面有一个参数。 ..
发布时间:2016-08-19 16:14:40 C/C++

在不同的功能分配的内存?

我想学习C和我目前正在写一个基本的堆栈数据结构,但我似乎无法得到基本的malloc / 免费的权利。 这里的code我一直在使用(我只是张贴的一小部分在这里说明一个具体的问题,而不是总code,但通过运行这个例子只是$产生的错误信息C $℃的的valgrind ) 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT;typedef结构进入{ 结构 ..
发布时间:2016-08-19 16:13:54 C/C++

如何做一个程序在内存中运行,内存的方式是通过操作系统来处理

我不内存管理明确当一个进程在执行 在运行时 下面是一个图表 我不与图像在以下明确的: 1)什么是这一形象是指?堆栈 2)什么是它所指的文件映射内存映射段? 3)什么是堆有一个过程做。在堆仅仅在一个进程处理或是堆的东西由操作系统内核维护,然后存储空间由malloc(使用堆)永远的用户空间应用程序调用这样当分配? 文中提到 ..
发布时间:2016-08-19 16:12:38 C/C++

图形用户界面的GNU调试

时pretty兴奋与GNU调试器和一个名为GUI的透视,因为它节省了我的时间了很多。因此,我张贴其他新手这个问题/答案有像我与他们的C $ C $ç寻找一种可视化的方式,看看发生了什么问题。 我工作的Linux Mint的(Ubuntu的)顺便说一句。 解决方案 我强烈建议 DDD 特别是如果你有复杂的数据结构形象化 ..
发布时间:2016-08-19 16:12:26 C/C++

如何现代化的虚拟机处理内存分配?

我正在用C写的一个简单的栈机器上,主要用于学习的目的。使用的malloc /免费我的记忆操作后,我认为这将是一个好主意,读现代虚拟机的一些内存分配的特定code。 我下载的Lua源$ C ​​$ C,并开始阅读。过了一会儿,我发现有很多东西宏观参与,我找不到code其中真正的内存分配完成(即的malloc 调用) 找到。 -exec grep的-i“的malloc”'{}'\\; -打印 ..
发布时间:2016-08-19 16:06:37 C/C++

释放内存的两倍

在C和C ++,释放空指针会导致一事无成。 不过,我看到人们说,内存损坏可能发生,如果你的“自由内存的两倍。” 这是真的吗?什么是引擎盖下怎么回事,当你释放内存两次? 解决方案 为int * p =的malloc(sizeof的(INT)); //的P值现在可以说为0x12345678* p值= 2; 自由(对); //内存指针被释放,但依然是P的值是为0x12345678 ..
发布时间:2016-08-19 16:05:17 C/C++开发

处理用C内存分配的最佳方式?

我想我如何在C处理内存++但在C这样做是不同的,我有点不把握好。 在C ++中我有构造函数和析构函数,我已经得到了pretty简单的new和delete,我知道如何使用它RAII,智能指针和类中使用封装。 然而,在C I不能处理malloc和free以同样的方式。我不知道如何隐藏,以及如何实现自动化的东西。所有我可以计算是使用函数发起并摧毁我的指针。但是,我应该怎么构建我的内存处理? 在写这 ..
发布时间:2016-08-19 16:02:31 C/C++

使用/ C ++中code混合使用C?

时当使用C C ++不好? 很多人都告诉我,在C ++中使用C是不好的,因为它不是安全的,它需要更多的内存管理。我一直告诉他们,只要你知道你做什么,你删除你的新的和免费的的malloc的那么C是没有问题的。 我目前在一个论坛上STD参数:: string的与一个char *正在发生。有些人说,分配一个简单的char *内存块更有效率,只要你释放它,它的罚款。在另一方面,我们有人们说的std : ..
发布时间:2016-08-19 15:55:10 C/C++开发

内存碎片事件探查器

有什么好看的内存碎片剖析? (linux的gcc版本将是很好)。因为它使用自定义的malloc / free函数Valgrind的不能分析这一点。 谢谢, 安德鲁 解决方案 我将开始与命令mtrace 。当你有一丝的glibc自带的Perl脚本命令mtrace(1)发现泄漏。然而,跟踪格式很容易理解,因此它应该是简单的过程变成碎片的分析这个。 ..
发布时间:2016-08-19 15:54:36 C/C++开发