memory-management相关内容

brk() 系统调用有什么作用?

根据Linux程序员手册: brk() 和 sbrk() 改变程序中断的位置,即定义进程数据段的结尾. 这里的数据段是什么意思?是只是数据段还是数据、BSS、堆的结合? 根据维基数据段: 有时数据、BSS 和堆区域统称为“数据段". 我认为没有理由只更改数据段的大小.如果它是数据,BSS 和堆一起,那么这是有道理的,因为堆将获得更多空间. 这就引出了我的第二个问 ..
发布时间:2021-12-03 13:37:58 服务器开发

Linux中是否有用于从虚拟地址确定物理地址的API?

Linux 操作系统中是否有用于从虚拟地址确定物理地址的 API? 解决方案 内核和用户空间使用由内存管理硬件映射到物理地址的虚拟地址(也称为线性地址).此映射由页表定义,由操作系统设置. DMA 设备使用总线地址.在 i386 PC 上,总线地址与物理地址相同,但其他体系结构可能具有特殊的地址映射硬件来将总线地址转换为物理地址. 在 Linux 中,您可以使用 asm/io. ..
发布时间:2021-12-03 13:20:12 服务器开发

linux/unix 进程的峰值内存使用量

是否有一种工具可以运行命令行并报告峰值 RAM 使用总量? 我正在想象类似于/usr/bin/time 的东西 解决方案 这是一个单行程序,不需要任何外部脚本或实用程序,也不需要您通过其他程序(如 Valgrind 或时间)启动流程,所以你可以将它用于任何已经在运行的进程: grep ^VmPeak/proc/$PID/status (将 $PID 替换为您感兴趣的进程的 PID ..
发布时间:2021-12-03 13:09:57 服务器开发

如何使用 C++ 在运行时获取内存使用情况?

我需要在程序运行时获取内存使用情况 VIRT 和 RES 并显示它们. 到目前为止我尝试过的: getrusage (http://linux.die.net/man/2/getrusage) int who = RUSAGE_SELF;struct rusage 用法;int ret;ret=getrusage(who,&usage);cout 但我总是得到0. 解决方案 ..
发布时间:2021-12-03 13:04:44 C/C++开发

为什么 malloc 没有“用完"?我电脑上的内存?

所以我有一个分配 256 MB 内存的程序,在用户按下 ENTER 后它释放内存并终止. #include #include int main(void) {字符 *p, s[2];p = malloc(256 * 1024 * 1024);如果( p == NULL)退出(1);printf("已分配");fgets(s, 2, stdin);免费(p);返回0;} 我多次运行这个程序并对每 ..
发布时间:2021-12-03 13:03:56 服务器开发

使用 iOS 的仪器:为什么内存监视器不同意分配?

从仪器的屏幕截图中可以看出,Allocations 认为我的应用程序 (Ongo) 仅使用了 7.55 MB 的内存,而内存监视器显示为 53.30.此外,可用系统内存与应用程序使用的内存量几乎没有相关性.有谁知道为什么这两个工具之间存在如此大的分歧?此外,是否有可能找到系统内存不足的来源或如何防止它如此快地耗尽?我的应用程序似乎没有泄漏内存,但不知何故它正在耗尽系统资源. 谢谢 解决 ..
发布时间:2021-12-03 11:21:39 移动开发

我什么时候应该在 -(void)viewDidUnload 而不是在 -dealloc 中释放对象?

-(void)viewDidUnload 有什么用? 我可以不只是在 -dealloc 中释放所有内容吗?如果视图确实卸载了,-dealloc 不会被调用吗? 解决方案 除了已经指出的内容之外,我还想详细说明 -viewDidUnload 背后的逻辑. 实现它的最重要原因之一是 UIViewController 子类通常还包含对视图层次结构中各种子视图的拥有引用.例如,这些属性 ..
发布时间:2021-12-03 11:18:58 C/C++开发

为什么要使用 ivar?

我通常看到这个问题以另一种方式被问到,例如必须每个 ivar成为财产?(我喜欢 bbum 对这个问题的回答). 我几乎只在我的代码中使用属性.然而,我经常与一位长期在 iOS 上进行开发并且是传统游戏程序员的承包商合作.他编写的代码几乎不声明任何属性,并且依赖于 ivars.我认为他这样做是因为 1.) 他已经习惯了,因为直到 Objective C 2.0(2007 年 10 月)和 2. ..
发布时间:2021-12-02 18:24:56 移动开发

使用块保留“self"的循环

恐怕这个问题非常基础,但我认为它与许多涉足块的 Objective-C 程序员有关. 我听说,由于块捕获在它们内部引用的局部变量作为 const 副本,在块中使用 self 会导致保留循环,如果块被复制.所以,我们应该使用 __block 来强制块直接处理 self 而不是复制它. __block typeof(self) bself = self;[someObject messageW ..
发布时间:2021-12-02 18:15:30 移动开发

@property 在 Objective-C 中保留、分配、复制、非原子性

作为 Objective-C 的新手,有人能给我一个关于保留、分配、复制和我遗漏的任何其他东西的概述,遵循@property 指令吗?他们在做什么,为什么我要使用一个而不是另一个? 解决方案 MrMage 链接的文章不再有效.所以,这是我在 Objective-C 的(非常)短时间编码中学到的东西: 非原子与原子- “原子"是默认值.始终使用“非原子".我不知道为什么,但我读过的书说 ..
发布时间:2021-12-02 18:10:20 C/C++开发

为什么 ARC 仍然需要@autoreleasepool?

对于 ARC(自动引用计数),我们根本不需要考虑使用 Objective-C 对象进行内存管理.不再允许创建 NSAutoreleasePools,但是有一个新的语法: @autoreleasepool {…} 我的问题是,当我不应该手动发布/自动发布时,为什么我需要它? 编辑:总结一下我从所有回答和评论中得到的内容: 新语法: @autoreleasepool { ... ..
发布时间:2021-12-02 17:56:26 移动开发

何时使用 -retainCount?

我想知道你目前在什么情况下使用-retainCount,以及最终使用它可能出现的问题. 谢谢. 解决方案 你永远不应该使用 -retainCount,因为它永远不会告诉你任何有用的东西.Foundation 和 AppKit/UIKit 框架的实现是不透明的;您不知道保留了什么、为什么要保留、谁在保留、何时保留等等. 例如: 您会认为 [NSNumber numberWi ..
发布时间:2021-12-02 17:33:15 C/C++开发

sys.intern() 有什么作用,应该在什么时候使用?

我遇到了关于字典内存管理的这个问题,其中提到了 intern 功能.它到底有什么作用,什么时候会用到? 举个例子:如果我有一个名为 seen 的集合,它包含形式为 (string1,string2) 的元组,我用它来检查重复项,存储 (intern(string1),intern(string2)) 会提高性能wrt内存还是速度? 解决方案 来自 Python 3 文档: sys. ..
发布时间:2021-12-02 16:55:45 其他开发

从不调用 Deinit 方法 - Swift Playground

在下一个代码中,我试图调用 deinit 方法,释放对 Person Class 实例 Mark 的所有引用,但从未调用 deinit.为什么? class Person{让名称:字符串初始化(名称:字符串){self.name = 姓名println("创建的人")}取消初始化{println("Person \(name) deinit")}}var 马克:人?= 人(姓名:“马克")Mar ..
发布时间:2021-12-02 15:57:50 移动开发

弱引用和无主引用有什么区别?

斯威夫特有: 强有力的参考 弱引用 无主引用 无主引用与弱引用有何不同? 什么时候使用无主引用是安全的? 无主引用是否存在安全风险,例如 C/C++ 中的悬垂指针? 解决方案 weak 和 unowned 引用都不会创建 strong 保留引用的对象(也就是它们不会增加保留计数以防止 ARC 取消分配引用的对象). 但为什么是两个关键字?这种区别与 Opt ..
发布时间:2021-12-02 15:47:27 移动开发

是否有必要在 Swift 程序中使用 autoreleasepool?

在 这个 WWDC14 演示文稿的第 17 页上,它说 使用Objective-C?仍然需要管理自动释放池 autoreleasepool {/* 代码 */} 这是什么意思?这是否意味着如果我的代码库没有任何 Objective-C 文件,autoreleasepool {} 是不必要的? 在一个相关问题的回答中,有一个例子,其中autoreleasepool可以有用: - ..
发布时间:2021-12-02 15:27:53 移动开发

使用 GC.Collect() 有什么问题?

虽然我确实理解使用这个函数的严重影响(或者至少我是这么认为的),但我不明白为什么它会成为受人尊敬的程序员永远不会使用的东西之一,即使是那些不使用的人甚至不知道它是做什么用的. 假设我正在开发一个应用程序,其中内存使用量因用户的操作而异.应用程序生命周期可以分为两个主要阶段:编辑和实时处理.在编辑阶段,假设创建了数十亿甚至数万亿个对象;其中有些很小,有些没有,有些可能有终结器,有些可能没有,假 ..
发布时间:2021-12-02 14:04:07 C#/.NET

在 .NET 中使用后将对象设置为 Null/Nothing

一旦你完成了它们,你是否应该将所有对象设置为 null(在 VB.NET 中为 Nothing)? 我知道在 .NET 中,必须处理任何实现了 IDisposable 接口的对象实例以释放一些资源,尽管对象在处理后仍然可以是某些东西(因此 IDisposablecode>isDisposed 属性在表单中),所以我认为它仍然可以驻留在内存中或至少部分驻留在内存中? 我也知道当一个对象超 ..
发布时间:2021-12-02 13:52:26 C#/.NET

当您退出 C 应用程序时,是否会自动释放 malloc 处理的内存?

假设我有以下 C 代码: int main() {int *p = malloc(10 * sizeof *p);*p = 42;返回0;//退出而不释放分配的内存} 当我编译并执行那个C程序时,即在内存中分配了一些空间后,我分配的内存在我退出应用程序并且进程终止后还会被分配(即基本上占用空间)吗? 解决方案 这取决于操作系统.大多数现代(和所有主要)操作系统都会释放程序结束时未释放的 ..
发布时间:2021-12-02 08:24:48 其他开发

如何仅使用标准库分配对齐的内存?

作为求职面试的一部分,我刚刚完成了一项测试,有一个问题让我很难过,甚至使用 Google 作为参考.我想看看 StackOverflow 的工作人员可以用它做什么: memset_16aligned 函数需要传递给它一个 16 字节对齐的指针,否则会崩溃. a) 你将如何分配 1024 字节的内存,并将其与 16 字节的边界对齐? b) memset_16aligned 执行后释放内 ..
发布时间:2021-12-02 08:15:41 其他开发