allocation 相关问题

内存分配是给程序一块内存的操作。

结构体总是分配堆栈还是有时分配堆?

我的印象是,在 C# 中,结构元素是在堆栈上分配的,因此从创建它们的方法返回时会消失。但是如果我放置 struct-val 会发生什么......

回答 7 投票 0

为什么大堆栈分配没有时间成本

我尝试了这个快速基准测试,发现分配 200 字节与分配 2000000 字节的时间成本相同。 怎么可能?

回答 1 投票 0

为什么 Rust 中的嵌套分配器会导致堆损坏?

我一直在尝试 Rust allocator_api 功能并开发了一个简单的线性分配器。我的测试用例表明这按预期工作。但是,我希望能够嵌套分配器,例如...

回答 1 投票 0

复合格式中的装箱分配

在 Rider Resharper 中建议简化字符串插值。 执行此操作时,堆分配查看器插件会警告我有关装箱分配的信息。事实上,IL 代码是不同的,当运行时...

回答 1 投票 0

分配的数组额外内存的 C++ 大小接近于从 malloc 返回的指针

我最近一直在尝试重载 new 和 delete 运算符,我注意到一些非常有趣的事情。 当我用 new T(); 分配类 T 时与 new T[1]() 相比,有一个

回答 1 投票 0

在标题中使用 if 指令

我有一个可用的通用图表。顶点的类型当前定义为: typedef 结构体顶点 { 无效*数据; 字符*标签; 布尔图; } 顶点; 然后可以自定义 void 指针...

回答 1 投票 0

如何在不分配的情况下从ReadOnlyMemory<char>获取字符串?

我们可以从ReadonlyMemory获取字符串引用而不需要在堆上重新分配吗? ReadonlyMemory someChars;//我从某个地方得到了ReadOnlyMemory 字符串 str = someCh...

回答 1 投票 0

如何在不分配堆的情况下转换切片引用的元素?

假设有一个参数数组需要在 SQL 查询中使用。每个参数必须是一个 &dyn ToSql,它已经为 &str 实现了。 需要使用该对象......

回答 2 投票 0

C++ while(true) 中的动态分配[关闭]

我是C++初学者,我不明白为什么我不能制作这种while循环: #包括 使用命名空间 std; 常量 int gridRows = 3; 常量 int gridColumns = 3; 字符串 *...

回答 1 投票 0

C 中全局变量的重新分配

据我了解,当从翻译单元调用函数并且该函数使用该翻译单元的全局变量时,变量地址是不可更改的。如果从 t 调用功能...

回答 1 投票 0

如果 C 结构包含指针,它们是否在堆上分配?

在我的程序中,我有一个方法可以实例化一个结构并返回如下所示的内容 结构体A { 整数a; 双 * dblPtr; 双** dblMatrix; } 结构体 A initStruct(int a) {

回答 1 投票 0

rust 将向量的容量增加 n

我正在研究leetcode问题88 https://leetcode.com/problems/merge-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150,它将一个向量合并到另一个向量中。因此...

回答 1 投票 0

为什么在广播分配给预分配数组的过程中会发生分配?

我无法理解为什么分配是在广播分配期间发生的,其中涉及的所有操作本身都是广播的。 使用定时器输出 to = 定时器输出() 功能...

回答 1 投票 0

内存竞技场和内存池有什么区别?

我见过这两个术语用于内存分配器的包装器,它们之间有什么区别? (如果有的话)

回答 3 投票 0

std::vector 范围初始化的幕后是什么? [重复]

#包括 #包括 #include“iostream” 类人{ 民众: std::string name{"no-name"}; 人() { std::cout << std::str...

回答 2 投票 0

如何在 Golang 中编写函数来仅使用 1 个分配/操作来反转 unicode 字符串?

我需要编写自己的reverse.Reverse 模拟unicode 字符串。这是我的代码: func Reverse(输入字符串) 字符串 { 符文 := []符文(输入) var 结果 strings.Builder 结果.Grow(len(

回答 1 投票 0

golang 指针切片中的奇怪分配

我有一个简单的基准来比较创建结构体切片和指向该结构体的指针切片的性能 包指针 进口 ( “测试” ) 类型smallStruct结构{ ...

回答 1 投票 0

如何在从另一个容器创建 std::vector 时确保一次性内存分配?

当我需要从另一个容器的某些元素创建 std::vector 时,例如另一个向量,确保新向量仅在内存中分配一次的最安全方法是: std::向量&l...

回答 2 投票 0

为什么 `Allocator.allocate` 分发 `NonNull<[u8]>`...但 `deallocate` 接受 `NonNull<u8>`?

正如标题所说。 pub 不安全特征分配器 { fn allocate(&self, 布局: 布局) -> Result, AllocError>; 不安全的 fn deallocate(&self, ptr: NonNull 正如标题所说。 pub unsafe trait Allocator { fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>; unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: Layout); } Allocator 上的两个必需方法都采用不同的指针类型,这对我来说似乎很奇怪。为什么做出这样的选择? 此外,为什么选择u8和[u8]?为什么两种方法不只使用 NonNull<()> 或 NonNull<[()]> 呢? 我的理解是,选择 [u8] 或 u8 是一个好主意,因为它具有实际可以分配的最不严格的布局要求(因为 Layout 要求 align 非零)。但是,我认为每次都需要演员表可能是更好的设计选择。 分配器可能会过度分配,并且NonNull<[u8]>是一个包含长度信息的胖指针。 为什么是u8而不是()?不确定,但它可能反映了所有内存最终都是一堆字节的想法。此外,允许悬空指向 ZST 的指针可能与此有关。

回答 1 投票 0

C++ 动态分配的 std::vector

我是一名 C++ 新手,正在研究 C++ 大学项目 Driver Book。 我是第一次使用向量,我想让它与动态内存分配一起工作。 我有矢量声明...

回答 4 投票 0

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