memory-management 相关问题

动态分配和释放部分物理内存的过程,以便在请求者之间尽可能公平并且没有饥饿的情况下响应程序请求。

集合的内存优化

在 .NET 6 及更高版本中重新获得 HashSet、List 等集合的内存占用的最佳方法是什么? 以下任何一项是否有帮助 一个。清除集合并分配 null b.只需分配...

回答 1 投票 0

在C++20中,非引用元组元素是否保证嵌套在元组中?

考虑以下函数,它返回元组的第 I 个元素与元组地址之间的字节偏移量: 模板 需要 ( ( 不是 std::

回答 1 投票 0

为什么 clang 的 `-O3` 分配在简单的分配基准上比 g++ 快 2 倍

关于alloca的使用和滥用 在上一个问题的底部得到了一些基准。 clang 显然在 -O3 优化器配置文件中有更好的实现。什么给?是叮当切割任何cor...

回答 1 投票 0

为什么 clang 的 `-O3` 分配比 g++ 快 2 倍

关于alloca的使用和滥用 在上一个问题的底部得到了一些基准。 clang 显然在 -O3 优化器配置文件中有更好的实现。什么给?叮叮当切任何c...

回答 1 投票 0

扩展 GCC 进行内存管理

我需要扩展GCC编译器来为一个巨大的C++项目进行内存管理,但我不知道从什么开始,我需要一些关于gcc如何分配内存的文档,以及一个插件框架...

回答 1 投票 0

Haskell 编译器如何决定是在堆上分配还是在堆栈上分配?

Haskell 不具有显式内存管理功能,并且所有对象都是按值传递的,因此也没有明显的引用计数或垃圾收集。 Haskell 编译器通常是如何工作的

回答 2 投票 0

Project-512.exe 中的 0x00007FFECFCBB16B (ucrtbase.dll) 抛出异常:0xC0000005:访问冲突写入位置 0xFFFFFFFFF9CF4880

我正在尝试用 C 语言读取文件,但是在编写了一堆代码以分配内存之后,我在实际读取文件时遇到了问题,因为我遇到了内存访问冲突,我尝试了

回答 1 投票 0

Python 中字典的内存使用情况?

当我在 sys 模块中使用字典的 getsizeof 方法时,我有点困惑。下面我创建了一个包含两个字符串的简单字典。两根弦的尺寸明显比那根大...

回答 4 投票 0

`getpwuid`从哪里分配内存?

我想了解函数 getpwuid 从哪里分配内存。我有一些示例代码,可以打印输入到程序的用户 ID 的用户名。 我阅读了

回答 1 投票 0

std::pmr::polymorphic_allocator 的用途是什么?

我正在 C++ 参考中查看这个示例: std::array 缓冲区; // 足以容纳所有节点 std::pmr::monotonic_buffer_resource mbr{buffer.data(), buffer.size(...

回答 1 投票 0

基于堆栈的动态内存分配 - 值得吗?

我想出了一种使用堆栈 RAM 而不是堆来进行动态内存分配的方法。 仍然有同样的警告,完成后忘记释放内存。 我通常使用嵌入式系统

回答 1 投票 0

Marshal 与 NativeMemory

我正在用 C# 编写虚拟机,并使用 Marshal 类来分配和释放内存,例如: 公共 ulong Allocate(int allocationSize) = (ulong)Marshal.AllocHGlobal(allocationSize); 噗...

回答 1 投票 0

通过多次分配处理函数中的清理

假设我有一个函数可以分配一些结构(对象),并且在设置其字段时必须分配额外的数据。由于每次分配都可能失败,因此对象创建可能只能部分成功。 W...

回答 1 投票 0

将 GCancellable 与 GtkAlertDialog 一起使用

出于测试目的,我编写了一个小程序,调用 GtkAlertDialog 并显示用户选择的结果。 我注意到了 GCancellable 的主题。 尽管研究了文档,我还是......

回答 1 投票 0

如果 std::new ...[length] 如果长度 > 0xffffffff,则 Visual Studio 编译错误 C2148

我正在 64 位模式下在 Visual Studio 上进行构建,并收到错误 c2148 - 数组的总大小不得超过 0x7fffffff 字节, 但 std::new 的实际阈值是 0xffffffff 并且不是 出现...

回答 1 投票 0

调整图像大小时内存泄漏

我有一种方法将 PDF 转换为图像(每个页面都转换为 UIImage),并调整每个图像的大小。方法正在以 QOS = 后台调用自定义队列。 当我尝试使用更多处理 PDF 时...

回答 2 投票 0

注册关键字:栈或堆

某些 C 内存管理函数(例如 malloc)将数据存储到堆而不是(默认)堆栈中。变量之前的 register 关键字(例如 register int n)指定 n 应该是 ...

回答 1 投票 0

有没有更有效的方法从一堆“x-y”图像中获取“x-z”切片?

我对一个物体进行了 CT 扫描:在 x-y 网格中包含像素的图像,每个 z 值一张图像。 我想制作 x-z 图像,从不同角度查看物体。 最明显的方法是:加载...

回答 1 投票 0

jarrayObject(字符串数组)在 JNI 调用中使用后是否应被删除/释放?

我正在使用 JNI 在 C++ 中进行实验,并且对如何处理我在 C++ 中创建的用作 JNI 调用参数的 Java 对象有疑问。 以这个非常简单的 java 类为例,带有一个字符串......

回答 1 投票 0

Rust 优化出乎意料地没有提高性能

我有一个 Rust 函数,它是我的应用程序中的瓶颈。我尝试对其进行优化,但没有看到预期的性能改进。这就是我所做的: fn my_function() -> Vec 我有一个 Rust 函数,它是我的应用程序中的瓶颈。我尝试对其进行优化,但没有看到预期的性能改进。这就是我所做的: fn my_function() -> Vec<f64> { let mut my_arr = vec![1.0; 30]; for i in 0..30 { my_arr[i] = // calculations to get the value } my_arr } fn another_func(arr: &[f64; 30]) -> i32 { let value = rnd_val; for i in 0..arr.len() { if value < arr[i] { return i as i32; } } 29 } 优化版本 fn my_function() -> i32 { let value = rand_val; let mut i = 0; while i < 30 { if value < /* calculations to get the value */ { return i as i32; } i += 1; } 29 } 在优化版本中,我组合了这两个函数,以避免创建 my_arr 向量,并可能减少迭代次数。但是,我没有看到我的应用程序有任何显着的性能改进。 我对两个版本都进行了分析,结果表明新版本中已经完全消除了分配。然而,尽管有这样的改进,我在我的应用程序中没有看到任何显着的性能提升。 鉴于分配已被取消,导致整体改善不足的原因可能是什么?我还应该考虑其他因素或可以尝试其他优化吗? 其他背景: 获取值的计算只是一些除法和求和,没有任何新变量。 该函数每秒被调用近22000000次 感谢您的见解! 由于您的优化并不重要,它只是划分操作和少一次分配,而这里“昂贵”的事情是计算,尤其是对计算机执行成本最高的除法(而不是一次分配),因此您的更改应该'不可见。 您的代码中发生的情况与机器实际执行的情况相差很多倍,您有编译器(在本例中是一个很好的编译器)在代码冗余时对其进行编辑(可能您的更改已经在已编译的代码中)代码),并且在编译器之上,机器本身对任务进行优化并重新排列它们,如果变化很小,它们可能是透明的。 如果你真的想检查结果是否更有效,你应该检查编译后的代码(找到一种方法使其汇编并检查更改的效果)。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.