memory-management 相关问题

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

调用 openssl::i2d_X509 后释放输出缓冲区的正确方法是什么?

我想将X509结构编码为DER字节。以下是我需要执行的 openssl(版本 > 0.9.7)手册页中的源代码示例(如果我希望 i2d_X509 自行分配内存): int 长度;

回答 1 投票 0

通过 .NET 9 转义分析,结构和类现在相等吗?

从内存分配的角度来看,结构(在大多数情况下)在堆栈上分配,类在堆上分配。每个人都有自己的权衡。结构与类总是包括...

回答 1 投票 0

c - unsetenv() 实现,是否需要释放内存?

根据 TLPI 练习 6-3 的要求,我使用 putenv()、getenv() 并通过直接修改环境变量实现了 setenv() 和 unsetenv()。 代码: // setenv() / unsetenv() 实现 // T...

回答 1 投票 0

内存错误:无法为形状为 (725000, 277, 76) 和数据类型 float64 的数组分配 30.4 GiB

它给出了内存错误,但内存容量从未达到。我的 SSH 上有 60 GB 的内存,完整的数据集进程消耗 30 我正在尝试用 k-fold 训练自动编码器。没有 k-...

回答 2 投票 0

为什么这个堆指针打印不同的地址?

如果我是正确的,两个 printf 应该显示变量具有相同的地址,因为与此同时没有任何内容分配给堆,但它显示不同的地址。 #包括 如果我是正确的,两个 printf 应该显示变量具有相同的地址,因为与此同时没有任何内容被分配到堆,但它显示不同的地址。 #include <stdio.h> #include <unistd.h> void *heapTop = NULL; int main() { printf("sbrk(0):%p\n", sbrk(0)); heapTop = sbrk(0); printf("heapTop: %p\n", heapTop); return 0; } 输出: sbrk(0):0x5b1033f6e000 heapTop: 0x5b1033f8f000 您需要在不调用 printf 或任何其他可能在堆上分配内存的函数的情况下对其进行测试。 #include <stdio.h> #include <unistd.h> #include <stddef.h> #include <stdint.h> void *heapTop = NULL; void *heapTop1 = NULL; void *sbrk(intptr_t increment); int main() { heapTop = sbrk(0); heapTop1 = sbrk(0); printf("heapTop: %p\n", heapTop); printf("heapTop1: %p\n", heapTop1); return 0; } https://godbolt.org/z/zE78M1TaP 结果是一样的: heapTop: 0x1f2d000 heapTop1: 0x1f2d000

回答 1 投票 0

在 C++ 中使用线程中向量的引用来解除分配运行时问题

我已经实现了使用向量引用的线程,并且不会根据我添加的通知系统同时更改相同的值,因此不应该存在任何原子性问题。我

回答 1 投票 0

C++ 到 C# 内存对齐问题

在 C# 中,我将 RGB 图像数据存储在 byte[] 数组 ([r, g, b, r, g, b, ...]) 中,并尝试将其转换为灰度。我正在 C#(使用指针)和...

回答 1 投票 0

如何减少html转pdf时的内存消耗?

请看一下这个: [..] 字符串 xhtml = ConvertToXhtml(htmlContent); // 内存分配 #1 iTextRenderer.setDocumentFromString(xhtml);// 内存分配 #2 iTextRenderer.layout();

回答 1 投票 0

调用CloseWindow()时raylib如何清理资源?

我想知道raylib是否在CloseWindow()调用时清理了所有资源。如果它不能清理所有内容,那么还有什么需要手动清理呢? 更多背景信息:程序转入...

回答 1 投票 0

x86_64 (amd64) 上的 /proc/$pid/statm 应用程序报告的映射页面是 arm64 (aarch64) 上相同应用程序的 4 倍

我们有一个带有共享库的C++多线程应用程序,运行在linux x86_64(debian-12,内核6.1.xx)和树莓派5(arm64,debian-12,内核6.3.xx)上。如果我锁定在 /proc/$...

回答 1 投票 0

尝试找到泄漏点! anon 对 pmap 意味着什么?

我正在尝试查找在 Linux 中运行的 Java 进程的内存去向。有人建议我使用 pmap -x 来准确查看内存在做什么。 输出确实很长,但基本上是......

回答 4 投票 0

C++ 将 const 引用分配给实例变量(内存问题?)

我一直认为引用在功能上与指针相同,它们只是有更友好的语法,以及其他一些细微的差别(引用不能被分配为空,它们不能被

回答 3 投票 0

在 C++20 中模拟 std::start_lifetime_as_array

根据cppreference,目前没有编译器支持std::start_lifetime_as_array。 然而,SO 答案表明它可以在 C++20 中“模拟”,如下所示: 模板

回答 1 投票 0

函数中包含 #include file.h 如何工作?

我正在开发一个嵌入式系统项目,所以我正在处理有限的内存。 我有一个巨大的 C 字符串数组,它基本上是一个包含 31 个位图的数组。我把它放在一个名为

回答 1 投票 0

如何使用Redux devTools调试redux存储有多大?

我现在在 Chrome 中运行 redux devtools,但它每秒都在不断变化(因为我们每秒轮询 API 并更新 redux)。我想看看我们有多少数据...

回答 1 投票 0

C++中bitset的大小是多少

我想知道bitset实际上是如何分配内存的。我从一些博客中读到它以位为单位占用内存。但是,当我运行以下代码时: 位集<3>位= 001; 计算< 我想知道bitset实际上是如何分配内存的。我从一些博客中读到它以位为单位占用内存。但是,当我运行以下代码时: bitset<3> bits = 001; cout<<sizeof(bits); 我得到的输出为 4。它背后的解释是什么? 还有在 C++ 中以位为单位分配空间的方法吗? 您可以将 sizeof(bitset<N>) 近似为: 如果内部表示是 32 位(如 32 位系统上的无符号),则为 4 * ((N + 31) / 32) 如果内部表示是 64 位(如 64 位系统上的 unsigned long),则为 8 * ((N + 63) / 64) 看来第一个是真的:4 * ((3 + 31) / 32)是4 我得到的输出为 4。它背后的解释是什么? 标准中没有关于如何实现bitset的信息。它是实现定义的,请查看编译器的 <bitset> 标头。 还有在C++中以位为单位分配空间的方法吗? 不,C++ 中没有以位为单位分配空间的方法。 您的 CPU 不是使用单个位进行操作,而是使用字节和字进行操作。在您的情况下,sizeof(bits) 结果为 4,因为编译器决定将此数据结构与 4 字节对齐。 通常在 32 位处理器上,编译器会将分配的内存大小设置为 4 字节的倍数,因此大于 3/8 的最接近的 4 倍数是 4 字节。 您无法对单独的位进行寻址,最低可寻址单位是字节。所以不,你不能精确地分配位。 另一件事是填充 - 您几乎总是会获得您要求的更多字节分配,这是为了优化目的。寻址不在 32b 边界上的字节通常很昂贵,在 x64 CPU 上寻址不在 64b 边界上的字节会导致异常。 (说到英特尔平台。)

回答 5 投票 0

是否应该在闭包中显式指定“self”,并在捕获列表中弱引用 self?

DispatchQueue.main.async { view.setNeedsLayout() } 通过上面的代码,我们得到了预期的错误:在闭包中隐式使用“self”;使用“自我”。使捕获语义明确。 据了解,...

回答 1 投票 0

malloc 对内存对齐有哪些保证?

我遇到了以下代码: int main() { char *A=(char *)malloc(20); char *B=(char *)malloc(10); char *C=(char *)malloc(10); 打印(“ %d",A); printf(" %d",B); 打印...

回答 4 投票 0

在 .Net 9 预览版中实现 JSON 源生成,以在物联网系统中进行高效、实时的处理

我正在评估 .Net 9 Preview 的 JSON 源生成功能,以改进项目的实时物联网数据处理。上下文如下: 我们的物联网设备发送 JSON 编码的传感器数据

回答 1 投票 0

如果将数据移动到不同的块,C++ realloc 函数是否会对旧数据块进行删除操作?

该函数可能会将内存块移动到新位置,在这种情况下返回新位置。 例如我有一个指向数组的指针: int *arr; // 接下来的某个地方它被初始化,填充了...

回答 4 投票 0

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